思路:
层序遍历,取每个level上的sum的均值即可。
注意double
防止溢出
class Solution {
public List<Double> averageOfLevels(TreeNode root) {
LinkedList<TreeNode> queue = new LinkedList<>();
List<Double> res = new ArrayList<>();
queue.add(root);
while (!queue.isEmpty()) {
int size = queue.size();
double average = 0;
long sum = 0; // long防止溢出
for (int i = 0; i < size; i++) {
TreeNode node = queue.poll();
sum += (long)node.val; //long防止溢出
if (node.left != null) {
queue.add(node.left);
}
if (node.right != null) {
queue.add(node.right);
}
}
average = (double)sum / size; //long转double
res.add(average);
}
return res;
}
}