LC 1161 [M] Maximum Level Sum of a Binary Tree - ALawliet/algorithms GitHub Wiki

# 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:
        Q = deque([ (root,1) ])
        
        max_sum = -sys.maxsize - 1 
        min_l = sys.maxsize
        
        while Q:
            level = []
            
            for _ in range(len(Q)):
                node, l = Q.popleft()
                
                level.append(node.val)
                
                if node.left:
                    Q.append( (node.left, l+1) )
                    
                if node.right:
                    Q.append( (node.right, l+1) )
                    
            sum_level = sum(level)
            if sum_level > max_sum:
                max_sum = sum_level
                min_l = l
                
        return min_l