#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]