题目描述
Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array.
思路
采用层序遍历,参考leetcode-559。
采用队列,当同一层节点全部出队后计算平均值。
注意求和要使用double类型的变量来记录。
代码
class Solution {
public List<Double> averageOfLevels(TreeNode root) {
List<Double> list = new ArrayList<>();
if (root == null) return list;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()) {
int size = queue.size();
double levelSum = 0.0;
// 将同一层的全部出队
for(int i =0; i < size; i++) {
TreeNode current = queue.poll();
levelSum += current.val;
if(current.left != null) queue.offer(current.left);
if(current.right != null) queue.offer(current.right);
}
list.add(levelSum / size);
}
return list;
}
}