仅记录自己刷题过程,顺便督促自我学习~
简单
题目描述
给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 以内的答案可以被接受。
示例 1:
输入: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:
输入: root = [3,9,20,15,7]
输出: [3.00000,14.50000,11.00000]
提示:
- 树中节点数量在`[1, ] 范围内
- <= Node.val <= - 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;
};