[路飞]_力扣算法题_1302. 层数最深叶子节点的和

127 阅读1分钟
难度 中等\color{orange}{中等}

题目内容 给你一棵二叉树的根节点 root ,请你返回 层数最深的叶子节点的和 。

题解 使用广度优先遍历,依次计算每层和,进入下一层的开始时重置总和result为0,如此程序就会在最后一层保留结果,最后return结果。

    
    /**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number}
 */
var deepestLeavesSum = function(root) {
    const que = [root];
    // 声明一个变量保存每一层的和
    let resSum;
    while(que.length) {
        // 如果进入了下一层,就将结果置为0
        resSum = 0
        const len = que.length;
        // 循环一层
        for(let i=0;i<len;i++) {
            const node = que.shift();
            resSum += node.val
            if(node.left) que.push(node.left)
            if(node.right) que.push(node.right)
        }
    }
    return resSum
};