记录 1 道算法题
层数最深的叶子节点的和
要求:返回最底层的叶子节点的和
计算二叉树的层数使用从下往上递增的方式,但是这里是要在下面的时候读取所在的层数,所以是从上往下的方法。从下往上靠递归返回值,从上往下可以靠参数传递下去,同过传入的参数标号这是在第几层,然后统计一个最深的层数,如果发现更深的层数就重置和。
function deepestLeavesSum(root) {
let total = 0
let maxDeep = -1
function dfs(root, curr) {
if (!root) return
// 先比较当前层数,然后递归
if (maxDeep === curr) {
// 最底层
total += root.val
} else if (maxDeep < curr) {
// 有更深的层数就更新
maxDeep = curr
total = root.val
}
}
dfs(root, 1)
return total
}