python我试图迭代地执行树的有序遍历,但我将进入一个无限循环

python我试图迭代地执行树的有序遍历,但我将进入一个无限循环,python,python-3.x,binary-search-tree,inorder,Python,Python 3.x,Binary Search Tree,Inorder,在下面的解决方案类中,我有一个按序遍历(左、根、右)的实现 出于某种原因,我进入了一个infinte循环,我想知道这是否是因为python处理连续if/else语句的方式 # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right =

在下面的解决方案类中,我有一个按序遍历(左、根、右)的实现

出于某种原因,我进入了一个infinte循环,我想知道这是否是因为python处理连续if/else语句的方式

# class TreeNode:
    #     def __init__(self, val=0, left=None, right=None):
    #         self.val = val
    #         self.left = left
    #         self.right = righ
    
    class Solution:
        def inorderTraversal(self, root: TreeNode) -> List[int]:
            out = []
            stack = []
            if root is None:
                return out
            else:
                stack.append(root)
                while stack != []:
                    temp = stack.pop()
                    if temp.right:
                        stack.append(temp.right)
                    if temp.left:
                        a = temp.left
                        stack.append(temp)
                        stack.append(a)
                    else:
                        out.append(temp.val)
                return out
                

if temp.left
中,您正在将同一节点添加回列表。我建议你用一个调试器来逐步完成你的代码,这并不是对你的直接问题的回答,但是为什么不使用一个预构建的树模块而不是滚动你自己的呢?例如: