Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array.java
Example 1:node
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:segmentfault
這題跟429. N-ary Tree Level Order Traversal很像。都是廣度優先遍歷樹(也就是按層級遍歷樹)。code
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { List<Double> result = new ArrayList<>(); public List<Double> averageOfLevels(TreeNode root) { if(root==null){ return result; } Queue<TreeNode> queue = new LinkedList<>(); queue.offer(root); int children_num=1; while(!queue.isEmpty()){ double sum = 0; int count=0; for(int i=0;i<children_num;i++){ TreeNode now = queue.poll(); sum += now.val; if(now.left!=null){ count++; queue.offer(now.left); } if(now.right!=null){ count++; queue.offer(now.right); } } sum /= children_num; result.add(sum); children_num = count; } return result; } }