Я питон новичку -.- Следующий код является то, что я пишу на leetcode:В чем причина того, что мне нужно использовать другое имя переменной для запуска моего кода?
def postorderTraversal(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
result, stack, current, last_traversed = [], [], root, None
while stack or current:
if current:
stack.append(current)
current = current.left
else:
parent = stack[-1]
if parent.right in (None, last_traversed):
result.append(parent.val)
last_traversed = stack.pop()
else:
current = parent.right
return result
Он работает, по-видимому, но я использовал, чтобы заменить все parent
с current
и программа дает мне результат " Превышен лимит времени ".
Что мне было интересно, почему я не могу просто использовать current
на всем протяжении кода. Почему мне нужно создать другую переменную для родительского узла?
Поскольку 'current' уже используется для другой роли, а одна переменная не может иметь двух значений? – interjay
Но по крайней мере «current = current.right» работает для моего заказа и порядка заказа. – yantiz
Я понятия не имею, о чем вы говорите в этом комментарии. Если вы напишете в 'current' вместо' parent', вы запишете значение, хранящееся в 'current', и, очевидно, получите неправильный результат в следующий раз, когда вам понадобится его исходное значение. – interjay