Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array.
Example 1:
Input: 3 / \ 9 20 / \ 15 7 Output: [3, 14.5, 11] Explanation: The average value of nodes on level 0 is 3, on level 1 is 14.5, and on level 2 is 11. Hence return [3, 14.5, 11].
Note:
- The range of node's value is in the range of 32-bit signed integer.
//深度优先算法
var average = function(t, i, sum, count) {
if (t == null)
return;
if (i < sum.length) {
sum.splice(i,1,sum[i] + t.val);
count.splice(i,1,count[i] + 1);
} else {
sum.push(1.0 * t.val);
count.push(1);
}
average(t.left, i + 1, sum, count);
average(t.right, i + 1, sum, count);
}
var averageOfLevels = function(root) {
var count = new Array();
var res = new Array();
average(root, 0, res, count);
for (var i = 0; i < res.length; i++)
res.splice(i,1, res[i] / count[i]);
return res;
}
//广度优先算法
var averageOfLevels = function(root) {
var res=new Array();
var queue=new Array();
queue.push(root);
while(queue.length>0){
var sum=0,count=0;
var temp=new Array();
while(queue.length>0){
var n=queue.shift();
sum+= n.val;
count++;
if(n.left!=null){
temp.push(n.left);
}
if(n.right!=null){
temp.push(n.right);
}
}
queue=temp;
res.push(sum/count*1.0);
}
return res;
};