Given the root of a binary tree, return the average value of the nodes on each level in the form of an array. Answers within 10-5 of the actual answer will be accepted.
Example 1:
Input: root = [3,9,20,null,null,15,7]
Output: [3.00000,14.50000,11.00000]
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].
Example 2:
Input: root = [3,9,20,15,7]
Output: [3.00000,14.50000,11.00000]
class Solution {
public List<Double> averageOfLevels(TreeNode root) {
List<Double> result = new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<>(List.of(root));
//queue.offer(root);
while(queue.size()>0){
double size = queue.size(),level_sum = 0;
for(int i =0 ; i<size;i++){
TreeNode current = queue.poll();
level_sum += current.val;
if(current.left != null) queue.offer(current.left);
if(current.right != null) queue.offer(current.right);
}
double level_avg = level_sum/ size;
result.add(level_avg);
}
return result;
}
}
Queue<TreeNode> q = new LinkedList<>();
q.offer(root);
Queue<TreeNode> q = new LinkedList<>(List.of(root));