Python 我必须使用另一个变量名来运行代码的原因是什么?

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:

我是一个python新手-- 以下代码是我在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
它显然是有效的,但我以前用
当前的
替换所有
父项
,程序会给出“超出时间限制”的结果


我想知道的是为什么我不能在整个代码中简单地使用
current
。为什么我必须为父节点创建另一个变量?

在以
开头的分支中,如果父节点为。右
,则设置了
父节点
,但未设置当前节点。因此,如果将其替换为当前值,则行为会有所不同。

如果堆栈为真,则当前值为假,堆栈[-1]。右侧为无中的一个,最后一次遍历时您不希望修改当前值


这是一个关于算法的问题,而不是关于语言的问题。

因为
current
已经被用于另一个角色,并且单个变量不能有两个值?但至少“current=current.right”适用于我的前序和顺序代码。我不知道你的评论指的是什么。如果写入
current
而不是
parent
,则会覆盖存储在
current
中的值,因此下次需要原始值时显然会得到错误的结果。为什么需要重用
current
?为不同的目的使用不同的变量没有什么错。如果你包括你的预订单和订单代码,我们可以帮助解释为什么你的订单不同。顺便说一下,这已经是你在这个网站上的第四个问题和第二个月了。你可以花两分钟来学习如何正确格式化代码。谢谢你的回答,是的,这确实是一个算法问题……我的错。