[路飞] 二叉树的最大深度

137 阅读1分钟

记录 1 道算法题

二叉树的最大深度

leetcode-cn.com/problems/ma…


跟计算二叉树高度差不多

  1. 递归,深度优先
    function maxDepth(root) {
        // 递归终止的条件
        if (!root) return 0
        // 每一层累加 1
        return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1
    }
  1. 循环,广度优先
    function maxDepth(root) {
        if (!root) return 0
        let count = 0
        let stack = [root]
        // 每一次循环是一层
        while (stack.length) {
          count++
          // 记录当前的层有多少个节点
          let i = stack.length
          while (i > 0) {
              // 依次取出来,推入他们的子节点
            const node = stack.shift()
            if (node.left) {
              stack.push(node.left)
            }
            if (node.right) {
              stack.push(node.right)
            }
            i--
          }
        }

        return count
    }

结束