一、题目描述
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
注: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3, 9, 20, null, null, 15, 7]
3
/ \
9 20
/ \
15 7
返回它的最大深度 3
二、思路分析
求最大深度,那么自然会优先考虑深度优先遍历去做这道题目。
然后再深度优先遍历的过程中,记录每个节点所在的层级,找出最大的层级即可。
解题步骤
创建一个变量用来记录最大深度。
深度优先遍历整棵树,并记录每个节点的层级,同时不断的刷新最大深度这个变量。
遍历结束后,返回最大深度这个变量即可。
三、AC 代码
var maxDepth = function(root) {
let res = 0
const dfs = (n, l) => {
if(!n) return
res = Math.max(res, l)
dfs(n.left, l + 1)
dfs(n.right, l + 1)
}
dfs(root, 1)
return res
}
四、总结
总的来说这道题考的就是树的深度遍历,然后用一个变量去记录深度即可。
当然树的广度优先遍历也不是不可以用就是。
本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情