LeetCode637-二叉树的层平均值

题目链接

英文链接:https://leetcode.com/problems/average-of-levels-in-binary-tree/

中文链接:https://leetcode-cn.com/problems/average-of-levels-in-binary-tree/

题目详述

给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.

示例 1:

1
2
3
4
5
6
7
8
9
输入:
3
/ \
9 20
/ \
15 7
输出: [3, 14.5, 11]
解释:
第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].

注意:

  1. 节点值的范围在32位有符号整数范围内。

题目详解

进行层次遍历,结算每一层结点值的累加和,得到平均值,加入到结果集中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class LeetCode_00637 {

public List<Double> averageOfLevels(TreeNode root) {
if (root == null) {
return new ArrayList<>();
}
List<Double> res = new ArrayList<>();
Queue<TreeNode> queue = new ArrayDeque<>();
queue.offer(root);
while (!queue.isEmpty()) {
int size = queue.size();
double sum = 0;
for (int i = 0; i < size; ++i) {
TreeNode node = queue.poll();
sum += node.val;
if (node.left != null) {
queue.offer(node.left);
}
if (node.right != null) {
queue.offer(node.right);
}
}
res.add(sum / size);
}
return res;
}
}