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

时间:2015-11-25 18:35:43

标签: 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

显然可行,但我过去常常用parent替换所有current,程序会给我“超出时间限制”的结果。

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

2 个答案:

答案 0 :(得分:2)

在以if parent.right开头的分支中,parent已设置,但current未设置。因此,如果将其替换为current,则行为会有所不同。

答案 1 :(得分:1)

如果stack为true,则current为False,stack [-1] .right是None和last_traversed中的一个,你不希望修改当前值。

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