The Maximum Level Sum of a Binary Tree problem (LeetCode75) is a common coding interview question that tests your knowledge of binary tree traversal, level-order processing and aggregation of values across levels. It challenges you to calculate which tree level has the highest sum of node values and return the smallest level number when there are ties.

In this blog, we’ll break down the problem, walk through examples, explain the Python solution step by step, analyze time and space complexity, highlight edge cases and explore real-world applications.
Problem Statement
Given the root of a binary tree, return the smallest level number (1-indexed) that has the maximum sum of node values.
Example 1
Input:
root = [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
The maximum sum is at level 2.
Example 2
Input:
root = [989,null,10250,98693,-89388,null,null,null,-32127]
Output:
2
Complete Python Solution
from collections import deque
from typing import Optional
# Definition for a binary tree node.
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def maxLevelSum(self, root: Optional[TreeNode]) -> int:
if not root:
return 0
max_sum = float('-inf')
max_level = 0
level = 1
queue = deque([root])
while queue:
level_sum = 0
level_size = len(queue)
for _ in range(level_size):
node = queue.popleft()
level_sum += node.val
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
if level_sum > max_sum:
max_sum = level_sum
max_level = level
level += 1
return max_level
Step-by-Step Explanation
Step 1: Handle Empty Tree
If the tree is empty, return 0
.
if not root:
return 0
Step 2: Initialize Variables and Queue
We need variables to track the maximum sum and the corresponding level, plus a queue for BFS traversal.
max_sum = float('-inf')
max_level = 0
level = 1
queue = deque([root])
Step 3: Process Each Level
Use BFS to traverse the tree level by level. Compute the sum of nodes for each level.
while queue:
level_sum = 0
level_size = len(queue)
Step 4: Traverse Nodes and Add Children
For every node in the level, add its value to level_sum
and push its children to the queue.
for _ in range(level_size):
node = queue.popleft()
level_sum += node.val
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
Step 5: Update Maximum Sum and Level
If the current level_sum
is greater than the recorded max_sum
, update both.
if level_sum > max_sum:
max_sum = level_sum
max_level = level
Increment level
after each iteration.
Step 6: Return the Result
After traversing all levels, return the max_level
.
return max_level
Time and Space Complexity
- Time Complexity:
O(n)
– Every node is visited once. - Space Complexity:
O(w)
– wherew
is the maximum width of the tree (worst caseO(n)
).
Edge Cases
- Empty Tree → return
0
. - Single Node Tree → always return
1
. - Negative Values → works fine since we start with
-inf
. - Multiple Levels Tie → the smallest level number is returned by design.
Real-World Applications
- Hierarchical Data Analysis: Finding the most impactful organizational level (e.g., team with maximum contribution).
- Network Traffic Analysis: Determining which level in a network hierarchy has the highest load.
- Decision Trees in ML: Identifying tree depth with maximum aggregated prediction weight.
- Biological/Phylogenetic Trees: Analyzing depth with highest aggregate characteristics.
Conclusion
The Maximum Level Sum of a Binary Tree is a classic BFS problem that strengthens your grasp of level-order traversal and aggregation techniques. By maintaining level sums and tracking the maximum, you efficiently determine which level contributes the most.
Practicing this problem prepares you for technical interviews, enhances your understanding of tree-based data structures and gives insights into real-world hierarchical data analysis.
Related Reads
- Kth Largest Element in an Array – LeetCode75 Python Solution Explained
- Rotting Oranges – LeetCode75 Python Solution Explained
- Delete Node in a Binary Search Tree – LeetCode75 Python Solution Explained
- Number of Provinces – LeetCode75 Python Solution Explained
- Binary Tree Right Side View – LeetCode75 Python Solution Explained
3 thoughts on “Maximum Level Sum of a Binary Tree – LeetCode75 Python Solution Explained”