二叉树的最大深度

递归

递归的思路很有意思,每递归一次深度 +1

function maxDepth(root: TreeNode | null): number {
  if (!root) return 0

  return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1
}

迭代

每次清空一层,而非一个。使用 slice 复制当前层会占用更多的 Runtime,不如直接 length

function maxDepth(root: TreeNode | null): number {
  if (!root) return 0

  const queue: TreeNode[] = [root]
  let count = 0
  while (queue.length) {
    let levelLength = queue.length
    
    while (levelLength--) {
      const cur = queue.shift()!
      if (cur.left) {
        queue.push(cur.left)
      }
      if (cur.right) {
        queue.push(cur.right)
      }
    }
    count++
  }
  return count
}