您的位置:首页 > 其它

leetCode_637_AverageOfLevelsInBinaryTree

2017-10-09 15:11 447 查看

题目描述

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;

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode