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:

  1. The number of nodes in the given tree is between 1 and 10^4.

  2. -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