【我的leetcode日记】1161. 最大层内元素和——js

218 阅读1分钟

仅记录自己刷题过程,顺便督促自我学习~

来源链接:leetcode.cn/problems/ma…

中等

题目描述

给你一个二叉树的根节点 root。设根节点位于二叉树的第 1 层,而根节点的子节点位于第 2 层,依此类推。

请返回层内元素之和 最大 的那几层(可能只有一层)的层号,并返回其中 最小 的那个。

示例 1:

image.png

输入:root = [1,7,0,7,-8,null,null]  
输出:2  
解释:  
第 1 层各元素之和为 1,  
第 2 层各元素之和为 7 + 0 = 7,  
第 3 层各元素之和为 7 + -8 = -1,  
所以我们返回第 2 层的层号,它的层内元素之和最大。

示例 2:

输入:root = [989,null,10250,98693,-89388,null,null,null,-32127]  
输出:2

  提示:

  • 树中的节点数在 [1, 10410^4]范围内
  • -10510^5 <= Node.val <= 10510^5

我的实现

 
var maxLevelSum = function(root) {
    let arr=[]
    let work = (root,depth)=>{
        if(!root) return 

        if(!arr[depth]){
            arr[depth]=[]
        }
        const {val,left,right}=root
        arr[depth].push(val)

        left&& work(left,depth+1)
        right&&work(right,depth+1)

    }
    work(root,0)
    //此时arr=[ [ 1 ], [ 7, 0 ], [ 7, -8 ] ]
   let sumArr= arr.map(item=> item.reduce((sum,i)=>sum+i,0))
   //sumArr=[ 1, 7, -1 ]
   return sumArr.indexOf(Math.max(...sumArr))+1
};