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; };