root所在层为1,后面依次加1.
每层求和,找到和最大的层数。
思路:
一层一层求和,想到BFS。
记录下最初的和为root.val.
后面的和超过这个值,就更新sum, 更新层数。
public int maxLevelSum(TreeNode root) {
int level = 0;
int maxLevel = 1;
int sum = root.val;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(queue.size() > 0) {
int size = queue.size();
int tmp = 0;
level ++;
for(int i = 0; i < size; i++){
TreeNode cur = queue.poll();
tmp += cur.val;
if(cur.left != null) queue.offer(cur.left);
if(cur.right != null) queue.offer(cur.right);
}
if(tmp > sum) {
sum = tmp;
maxLevel = level;
}
}
return maxLevel;
}