日野弥生:勉強しよう

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]

フラッシュタブ:LeetCode

题目链接:https://leetcode.cn/problems/maximum-level-sum-of-a-binary-tree/

上一篇

LeetCode 199 - 二叉树的右视图