题目链接:二叉树的层平均值
题目描述:给定一个非空二叉树的根节点 root
, 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5
以内的答案可以被接受。
分析:求每一层的平均值,和求二叉树的右视图思路是类似的。使用广度优先搜索,进行层序遍历,求每一层节点值的和除以该层的节点数,记录下来其平均值。
js代码如下:
// 使用BFS广度优先搜索
var averageOfLevels = function(root) {
if (root == null)
return [0];
if(root.left==null && root.right==null)
return [root.val];
let nodeArray = new Array();
nodeArray.push(root);
let valueArray = new Array();
valueArray.push(root.val);
while (nodeArray.length!=0) {
let length=nodeArray.length;
let i=0,sum=0;
while(i < length) {
let left=nodeArray[0].left;
if(left){
nodeArray.push(left);
sum+=left.val;
}
let right=nodeArray[0].right;
if(right){
nodeArray.push(right);
sum+=right.val;
}
i++;
nodeArray.shift();
}
if(nodeArray.length==0)
return valueArray;
valueArray.push(sum/nodeArray.length);
}
};