题目描述
Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array.
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
import java.util.Queue;
class Solution {
public List<Double> averageOfLevels(TreeNode root) {
if (root == null)
return null;
List<Double> list = new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<>();
list.add((double)root.val);
queue.add(root);
TreeNode last = root;
TreeNode nextLast = root;
double averageSum = 0;
int count = 0;
while (queue.size() != 0) {
TreeNode temp = queue.poll();
if (temp.left != null) {
nextLast = temp.left;
queue.add(temp.left);
averageSum += temp.left.val;
count ++;
}
if (temp.right != null) {
nextLast = temp.right;
queue.add(temp.right);
averageSum += temp.right.val;
count ++;
}
if (temp == last) {
if (nextLast != last) {
list.add(averageSum / count);
averageSum = 0;
count = 0;
last = nextLast;
}
}
}
return list;
}
}