首页 > 解决方案 > Python:二叉树防止空索引

问题描述

我不断得到一个空节点级别,代码创建一个索引来跟踪我的总和。我现在似乎能够阻止它的引入。任何人都可以帮助发现修复吗?我知道还有其他解决方案,但理想情况下我想看看我是否能让这个解决方案工作。

las 迭代创建 aone_idx[4] = 0但没有节点。由于所有级别的总和为负,因此 0 将是最大值。但我不应该有 4 级总和。

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

root = TreeNode(
    -100,
    left=TreeNode(
        -200,
        left=TreeNode(-20, left=None, right=None),
        right=TreeNode(-5, left=None, right=None)
    ),
    right=TreeNode(
        -300,
        left=TreeNode(-10, left=None, right=None),
        right=None
    )
)

def maxLevelSum(root):
    import operator
    
    queue = [(1, root)]
    one_idx = {1: root.val}

    while queue:
        i, l = queue.pop(0)
        i += 1
        
        if i not in one_idx:
            one_idx[i] = 0

        if l.left is not None: 
            one_idx[i] += l.left.val
            queue.append((i, l.left))

        if l.right is not None:
            one_idx[i] += l.right.val
            queue.append((i, l.right))
            
    return max(one_idx.items(), key=operator.itemgetter(1))[0] 

标签: python-3.xbinary-tree

解决方案


推荐阅读