/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public List<Double> averageOfLevels(TreeNode root) { Queue<TreeNode> que = new LinkedList<>(); List<Double> ans = new ArrayList<>(); if(root != null) { que.offer(root); } double len; double sum; while(!que.isEmpty()) { len = que.size(); sum = 0; for(int i = 0; i < len; i++) { root = que.poll(); sum += root.val; if(root.right != null) { que.offer(root.right); } if(root.left != null) { que.offer(root.left); } } ans.add(sum / len); } return ans; } }