Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array.
Example 1:
Input: 3 / \ 9 20 / \ 15 7 Output: [3, 14.5, 11] Explanation: The average value of nodes on level 0 is 3, on level 1 is 14.5, and on level 2 is 11. Hence return [3, 14.5, 11].
题解:
此题我们可以直接通过层次遍历,对每一层所有节点求和,然后求其平均值,按照每一层的顺序放在一个数组中输出。代码如下,主要借鉴层次遍历的思路。
public class averageOfLevels
{
public List<Double> averageOfLevels(TreeNode root)
{
List<Double> list = new ArrayList<>();
if(root == null)
return list;
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.add(root);
int length = queue.size();
while(!queue.isEmpty()) //两层循环
{
//List<Double> li = new ArrayList<>();
double num = 0;
int len = length;
while(length-- > 0)
{
TreeNode node = queue.poll();
num += (double)node.val;
if(node.left != null)
queue.add(node.left);
if(node.right != null)
queue.add(node.right);
}
list.add(num / len);
length = queue.size();
}
return list;
}
}