题目:
给你一个二叉树的根节点 root。设根节点位于二叉树的第 1 层,而根节点的子节点位于第 2 层,依此类推。
请你找出层内元素之和 最大 的那几层(可能只有一层)的层号,并返回其中 最小 的那个。
示例:
输入:[1,7,0,7,-8,null,null]
输出:2
解释:
第 1 层各元素之和为 1,
第 2 层各元素之和为 7 + 0 = 7,
第 3 层各元素之和为 7 + -8 = -1,
所以我们返回第 2 层的层号,它的层内元素之和最大。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-level-sum-of-a-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路:
层次遍历二叉树,并顺便求每层的和,将和存入数组中。最后计算得到该数组的最大值的下标。
代码:
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {number}
*/
var maxLevelSum = function(root) {
var sum=[];
var stack=[root];
var len=stack.length;
while(1){
var he=0;
for(i=0;i<len;i++){
var node=stack.shift();
he=he+node.val;
if(node.left!=null) stack.push(node.left);
if(node.right!=null) stack.push(node.right);
}
sum.push(he)
if(stack.length==0) break;
else len=stack.length;
}
var d=JSON.parse(JSON.stringify(sum));
d.sort(function(a,b){
return b-a;
})
return sum.indexOf(d[0])+1;
};