繁体   English   中英

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

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

我正在尝试在二进制搜索树上实现一种简单的有序遍历方法。

            10
          /    \
         5      15
          \
           8

我想打印整个树,但是我只打印了前3个节点。 我的问题是:

-如何解决“有序”打印方法? '插入'方法工作正常。 -排序方法的基本条件是什么? 当所有节点都打印完后,如何知道要停止?

 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()在可以处理selfself.rightChild之前结束对inorder的调用。 删除return ,该方法始终不返回任何内容。

暂无
暂无

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

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