[路飞] 层数最深叶子节点的和

117 阅读1分钟

记录 1 道算法题

层数最深的叶子节点的和

leetcode-cn.com/problems/de…


要求:返回最底层的叶子节点的和

计算二叉树的层数使用从下往上递增的方式,但是这里是要在下面的时候读取所在的层数,所以是从上往下的方法。从下往上靠递归返回值,从上往下可以靠参数传递下去,同过传入的参数标号这是在第几层,然后统计一个最深的层数,如果发现更深的层数就重置和。

    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
    }