简体   繁体   English

在Python中使用顺序遍历(递归)打印二进制搜索树节点

[英]Printing binary search tree nodes using inorder traversal (recursion) in Python

I am trying to implement a simple inorder traversal method on a binary search tree. 我正在尝试在二进制搜索树上实现一种简单的有序遍历方法。

            10
          /    \
         5      15
          \
           8

I want to print the whole tree but I am only getting the first 3 nodes printed. 我想打印整个树,但是我只打印了前3个节点。 My questions are: 我的问题是:

-- How can I fix my 'inorder' print method? -如何解决“有序”打印方法? 'insert' method works fine. '插入'方法工作正常。 -- What is the base condition in the inorder method? -排序方法的基本条件是什么? How will it know to stop when all the nodes have been printed? 当所有节点都打印完后,如何知道要停止?

 class Tree:
  def __init__(self, value):
    self.node = value
    self.leftChild = None
    self.rightChild  = None

  def insert(self, value):
    if self.node is None:
        self.node = value
        return True
    if self.node is not value:
        if self.node > value:
            if self.leftChild  is None:
                self.leftChild  = Tree(value)
            else:
                return self.leftChild.insert(value)
        if self.node < value:
            if self.rightChild  is None:
                self.rightChild  = Tree(value)
            else:
                 return self.rightChild.insert(value)
    else:
        return False

  def inorder(self):
      if self:  
          if self.leftChild:
              return self.leftChild.inorder()
          print self.node
          if self.rightChild:
              return self.rightChild.inorder()


tree = Tree(10)
tree.insert(5)
tree.insert(8)
tree.insert(15)
tree.inorder()


> 5
  8
  10

return in return self.leftChild.inorder() ends the call to inorder before self and self.rightChild can be handled. return in return self.leftChild.inorder()在可以处理selfself.rightChild之前结束对inorder的调用。 Remove the return s, the method doesn't return anything anyway. 删除return ,该方法始终不返回任何内容。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM