Python 我必须使用另一个变量名来运行代码的原因是什么?
我是一个python新手-- 以下代码是我在leetcode上编写的:Python 我必须使用另一个变量名来运行代码的原因是什么?,python,Python,我是一个python新手-- 以下代码是我在leetcode上编写的: def postorderTraversal(self, root): """ :type root: TreeNode :rtype: List[int] """ result, stack, current, last_traversed = [], [], root, None while stack or current:
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
它显然是有效的,但我以前用当前的替换所有父项
,程序会给出“超出时间限制”的结果
我想知道的是为什么我不能在整个代码中简单地使用current
。为什么我必须为父节点创建另一个变量?在以开头的分支中,如果父节点为。右
,则设置了父节点
,但未设置当前节点。因此,如果将其替换为当前值,则行为会有所不同。如果堆栈为真,则当前值为假,堆栈[-1]。右侧为无中的一个,最后一次遍历时您不希望修改当前值
这是一个关于算法的问题,而不是关于语言的问题。因为current
已经被用于另一个角色,并且单个变量不能有两个值?但至少“current=current.right”适用于我的前序和顺序代码。我不知道你的评论指的是什么。如果写入current
而不是parent
,则会覆盖存储在current
中的值,因此下次需要原始值时显然会得到错误的结果。为什么需要重用current
?为不同的目的使用不同的变量没有什么错。如果你包括你的预订单和订单代码,我们可以帮助解释为什么你的订单不同。顺便说一下,这已经是你在这个网站上的第四个问题和第二个月了。你可以花两分钟来学习如何正确格式化代码。谢谢你的回答,是的,这确实是一个算法问题……我的错。