给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.
示例 1:
输入:
3
/ \
9 20
/ \
15 7
输出: [3, 14.5, 11]
解释:
第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].
解题思路:使用广度优先遍历的方法,用一个队列来辅助进行,广度遍历每一层节点时,计算节点个数个节点值的和,求出每层的平均值。
class Solution {
public List<Double> averageOfLevels(TreeNode root) {
List<Double> average = new ArrayList<Double>();
if(root == null) return average;
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
while(!queue.isEmpty()) {
int num = queue.size();
double sum = 0;
for(int i=0;i<num;i++){
TreeNode node = queue.poll();
sum += node.val;
if(node.left != null){
queue.add(node.left);
}
if(node.right != null){
queue.add(node.right);
}
}
average.add(sum/num);
}
return average;
}
}