- 题目考察的知识点
二叉树的遍历,层次遍历
- 题目解答方法的文字分析
通过层次遍历以及在层次遍历时先统计本层的TreeNode个数size,然后在每一层的遍历过程中,统计每一层的和sum,然后用队列list装载每一层的平均重量sum/size。因为队列具有先进先出的特点,能够保证层的顺序。最后将平局重量装入double[]即可。
- 本题解析所用的编程语言
java
- 完整且正确的编程代码
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @return double浮点型一维数组
*/
public double[] averageOfLevels (TreeNode root) {
if(root==null)
return new double[0];
Queue<TreeNode> queue = new LinkedList<>();
Queue<Double> list= new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
int size = queue.size();
int len = queue.size();
double sum =0.000;
while(size-- >0){
TreeNode temp= queue.poll();
sum+=temp.val;
if(temp.left!=null){
queue.offer(temp.left);
}
if(temp.right!=null){
queue.offer(temp.right);
}
}
list.offer(sum/len);
}
double[] ans =new double[list.size()];
for(int i=0;i<ans.length;i++){
ans[i] = list.poll();
}
return ans ;
}
}

京公网安备 11010502036488号