这段代码中的 tmp 变量有什么作用?力码#94

问题描述

python 新手,我正在做 leetcode 问题 94,二叉树中序遍历。给定二叉树的根,返回其节点值的中序遍历。

我从 https://leetcode-cn.com/problems/binary-tree-inorder-traversal/solution/dong-hua-yan-shi-94-er-cha-shu-de-zhong-xu-bian-li/

找到了这个代码
class Solution(object):
    def inorderTraversal(self,root):
        """
        :type root: TreeNode
        :rtype: List[int]
        """
        res = []
        pre = None
        while root:
            if root.left:
                pre = root.left
                while pre.right:
                    pre = pre.right
                pre.right = root

                tmp = root
                root = root.left
                tmp.left = None
            else:
                res.append(root.val)
                root = root.right
        return res

但是,我无法理解 tmp 变量在这里做什么。其他地方好像没有用到tmp变量。

我试图删除这两行

tmp = root
tmp.left = None

但后来我收到超时错误。谁能解释一下这两行在这里做什么?

解决方法

tmp 需要移除root的左孩子,否则会一直循环。