Problem

Given a binary tree, return the level of the tree with minimum sum.

OR

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

Opposite of this problem - Minimum Level Sum of a Binary Tree Problem.

Examples

Example 1:

graph TD
	A(1) --- B(7) & C(0)
	B --- D(7) & E("-8")
	
  
Input:
root = [1,7,0,7,-8,null,null]
Output:
 3
Explanation: 
Level 1 sum = 1.
Level 2 sum = 7 + 0 = 7.
Level 3 sum = 7 + -8 = -1.
So we return the level with the minimum sum which is level 3.

Solution

Method 1 - Level Order Traversal

Code

Java
    public int minLevelSum(TreeNode root) {
        int min = Integer.MAX_VALUE, minLevel = 1;
        Queue<TreeNode> q = new LinkedList<>();
        q.offer(root);
        for (int level = 1; !q.isEmpty(); ++level) {
            int sum = 0;
            int sz = q.size();
            while (sz > 0) {
                TreeNode n = q.poll();
                sum += n.val;
                if (n.left != null) { 
                    q.offer(n.left);
                }
                if (n.right != null) {
                    q.offer(n.right);
                }	            
            }
            if (min > sum) {
                min = sum;
                minLevel = level;
            }
        }
        return minLevel;
    }

Complexity

  • ⏰ Time complexity: O(n)
  • 🧺 Space complexity: O(n) (at max n elements will be stored by the queue)