日野弥生:勉強しよう
LeetCode 1161 - 最大层内元素和
发表于2025年04月16日
本题使用广度优先搜索的层次遍历方式即可解决问题。
class Solution:
def maxLevelSum(self, root: Optional[TreeNode]) -> int:
if not root:
return 0
queue = deque()
# 起始深度是1
queue.append([root, 1])
currDepth = 1
currSum = 0
# 注意使用无穷小来初始化最大值
maximum = [float('-inf'), -1]
while queue:
item = queue.popleft()
if item[1] > currDepth:
# 层数改变时,更新最大值和所在层数
if maximum[0] < currSum:
maximum[0] = currSum
maximum[1] = currDepth
currSum = 0
currDepth += 1
currSum += item[0].val
if item[0].left:
queue.append([item[0].left, item[1] + 1])
if item[0].right:
queue.append([item[0].right, item[1] + 1])
# 遍历结束后还有一层需要处理
if maximum[0] < currSum:
maximum[0] = currSum
maximum[1] = currDepth
return maximum[1]