leetcode 637. 二叉树的层平均值
要求:给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。
备注:就是看了题解才做的,不过,也记住了一个套路,但凡是要计算树的每一层节点的平均值直接套一下这个框架就行了
思路:平均值 = 所有节点值的总和 / 节点的个数,而解决该题最好的遍历方式就是层序遍历,代码如下:
public List<Double> getAvgArray(TreeNode root){
List<Double> result = new ArrayList<>();
Queue<TreeNode> queue = new ArrayDeque<>();
queue.offer(root);
while(!queue.isEmpty()){
// 获取该层节点的总量
int size = queue.size();
// 统计该层节点值的总和
double sum = 0L;
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);
}
}
// 记录结果
result.add(sum/size);
}
return result;
}
PS:自己也已经想到了用层序,但是不知道如何计算每层的平均值,长记性了