Python: Двоичное дерево предотвращает пустой индекс

#python-3.x #binary-tree

Вопрос:

Я продолжаю получать пустой уровень узла с кодом, создающим индекс для отслеживания моих сумм. Кажется, теперь я могу предотвратить его внедрение. Может ли кто-нибудь помочь определить исправление? Я знаю, что есть и другие решения, но в идеале я хочу посмотреть, смогу ли я заставить это работать.

Итерация las создает a one_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]