原题:#637_二叉树的层平均值
- 使用队列保存每一层的节点
- 使用数组保存每一层的平均值
public List<Double> averageOfLevels(TreeNode root) {
//创建一个数组放入平均值
List<Double> ret = new ArrayList<>();
if (root == null) return ret;
//创建一个队列存放每一层的节点
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
while (!queue.isEmpty()) {
int len = queue.size();
double sum = 0;
for (int i = 0; i < len; i++) { //当前层节点有多少个就遍历多少次
TreeNode node = queue.poll();
sum += node.val;
if (node.left != null) queue.add(node.left);
if (node.right != null) queue.add(node.right);
}
ret.add(sum/len); //每一层的结果都放入数组容器
}
return ret;
}