Maximum Level Sum of a Binary Tree
Given the root
of a binary tree, the level of its root is 1
, the level of its children is 2
, and so on.
Return the smallest level X
such that the sum of all the values of nodes at level X
is maximal.
Example 1:
Input: [1,7,0,7,-8,null,null]
Output: 2
Explanation:
Level 1 sum = 1.
Level 2 sum = 7 + 0 = 7.
Level 3 sum = 7 + -8 = -1.
So we return the level with the maximum sum which is level 2.
Note:
The number of nodes in the given tree is between
1
and10^4
.-10^5 <= node.val <= 10^5
class Solution {
public int maxLevelSum(TreeNode root) {
Queue<TreeNode> q = new LinkedList<>();
q.add(root);
int maxSum = Integer.MIN_VALUE, ans = -1, level = 0;
while (q.size() != 0) {
level++;
int size = q.size(), currSum = 0;
while (size-- > 0) {
TreeNode t = q.poll();
currSum += t.val;
if (t.left != null)
q.add(t.left);
if (t.right != null)
q.add(t.right);
}
if (currSum > maxSum) {
maxSum = currSum;
ans = level;
}
}
return ans;
}
}
Last updated