给定一个非空二叉树的根节点 root
, 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5
以内的答案可以被接受。
思路:其实就是计算每一层的和,再求平均值。
public static List<Double> averageOfLevels(TreeNode root) {
List<Double> result=new ArrayList();
//借助队列
Queue<TreeNode> queue=new LinkedList();
if(root!=null){
queue.add(root);
}
while (!queue.isEmpty()){
int size=queue.size(); //记录每层个数
double sum=0;
for(int i=0;i<size;i++){
TreeNode node=queue.poll();
sum=sum+node.val;
if(node.left!=null){
queue.add(node.left);
}
if(node.right!=null){
queue.add(node.right);
}
}
result.add(sum/size); //将每一层的平均值存入result中
}
return result;
}