【我的leetcode日记】637. 二叉树的层平均值——js

100 阅读1分钟

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

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

简单

题目描述

给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10510^5 以内的答案可以被接受。

示例 1:

image.png

输入:root = [3,9,20,null,null,15,7]
输出:[3.00000,14.50000,11.00000]
解释:  
第 0 层的平均值为 3,第 1 层的平均值为 14.5,第 2 层的平均值为 11 。  
因此返回 [3, 14.5, 11]

示例 2:

image.png

输入: root = [3,9,20,15,7]
输出: [3.00000,14.50000,11.00000]

  提示:

  • 树中节点数量在`[1, 10410^4] 范围内
  • 231-2^{31}  <= Node.val <= 2312^{31} - 1

我的实现

 
/**
 * @param {TreeNode} root
 * @return {number[]}
 */
var averageOfLevels = function(root) {
    let arr=[]
    const 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)
    //[ [ 3 ], [ 9, 20 ], [ 15, 7 ] ]
    let res=arr.map(item=>{
        let sum=item.reduce((sum,i)=>sum+i,0);
        return sum/item.length
    })
    
    return res;
};