Python 如何调用函数来计算BST的前序?

Python 如何调用函数来计算BST的前序?,python,binary-search-tree,traversal,preorder,Python,Binary Search Tree,Traversal,Preorder,我用Python实现了创建二叉搜索树的函数。它当前按顺序显示节点,现在我正试图让它按预先顺序显示 我根据笔记创建了inoorder函数,但我不知道如何让preorder正常工作。现在它显示最左边的节点,但我无法让它返回到右边的节点。我将用示例值发布我的代码。任何能让我走上正轨的建议都将不胜感激。谢谢 我把我所有的代码,只是预订单函数代码 完整的Python代码: 请看遍历的解释。您的解决方案非常简单,并且将解释清楚地翻译成代码。Pre-order与in-order的不同之处在于它在树中递归的顺序

我用Python实现了创建二叉搜索树的函数。它当前按顺序显示节点,现在我正试图让它按预先顺序显示

我根据笔记创建了inoorder函数,但我不知道如何让preorder正常工作。现在它显示最左边的节点,但我无法让它返回到右边的节点。我将用示例值发布我的代码。任何能让我走上正轨的建议都将不胜感激。谢谢

我把我所有的代码,只是预订单函数代码

完整的Python代码:
请看遍历的解释。您的解决方案非常简单,并且将解释清楚地翻译成代码。Pre-order与in-order的不同之处在于它在树中递归的顺序。除此之外,它同样简单明了。为了使预订单生效,对代码所需的更改同样应该是从订单到预订单的简单更改。下面的代码应该有效:

def inOrder(self):
    global dspList2
    if(self.left):
        self.left.inOrder()
    dspList2.append(self.data)
    if(self.right):
        self.right.inOrder()

def preOrder(self):
    global dspList
    dspList.append(self.data)
    if(self.left):
        self.left.preOrder()
    if (self.right):
        self.right.preOrder()
请注意,与其使用全局变量,不如将其委托给采用累加器的助手方法,这样更安全、更好:

def inOrder(self):
    acc = []
    self.inOrderAcc(self, acc)
    return acc

def inOrderAcc(self, acc):
    if (self.left):
        self.left.inOrderAcc(acc)
    acc.append(self.data)
    if (self.right):
        self.right.inOrderAcc(acc)    

你说你不能让它回到正轨是什么意思?你的代码甚至没有尝试回溯,我想你只是错过了对self.right.preOrder的调用。如果是,我会在第二分钟调用它吗?
def inOrder(self):
    global dspList2
    if(self.left):
        self.left.inOrder()
    dspList2.append(self.data)
    if(self.right):
        self.right.inOrder()

def preOrder(self):
    global dspList
    dspList.append(self.data)
    if(self.left):
        self.left.preOrder()
    if (self.right):
        self.right.preOrder()
def inOrder(self):
    acc = []
    self.inOrderAcc(self, acc)
    return acc

def inOrderAcc(self, acc):
    if (self.left):
        self.left.inOrderAcc(acc)
    acc.append(self.data)
    if (self.right):
        self.right.inOrderAcc(acc)