记录 1 道算法题
二叉树的最大深度
跟计算二叉树高度差不多
- 递归,深度优先
function maxDepth(root) {
// 递归终止的条件
if (!root) return 0
// 每一层累加 1
return Math.max(maxDepth(root.left), maxDepth(root.right)) + 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
}
结束