[英]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()
在可以处理self
和self.rightChild
之前结束对inorder
的调用。 Remove the return
s, the method doesn't return anything anyway. 删除
return
,该方法始终不返回任何内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.