“BFS基本问题。”
题干
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。
示例
示例 1:
输入: 3 / \ 9 20 / \ 15 7 输出:[3, 14.5, 11] 解释:第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。
二叉树的数据格式定义:
// Definition for a binary tree node.
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {}
TreeNode(int val) { this.val = val; }
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
复制下面的代码到ide中,并补全函数:
class Solution {
public List<Double> averageOfLevels(TreeNode root) {
}
}
题解
二叉树的层序遍历:
class Solution {
public List<Double> averageOfLevels(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<>();
List<Double> res = new ArrayList<>();
queue.add(root);
// BFS
while (!queue.isEmpty()) {
int size = queue.size();
double sum = 0;
for (int i = 0; i < size; i++) {
TreeNode node = queue.remove();
sum += node.val;
if (node.left != null) queue.add(node.left);
if (node.right != null) queue.add(node.right);
}
res.add(sum / size);
}
return res;
}
}