我试图在二叉搜索树上实现一个简单的inorder遍历方法。
10
/ \
5 15
\
8
我想要打印整个树,但我只打印了前3个节点。我的问题是:
- 如何修复我的'inorder'打印方法? 'insert'方法工作正常。 - inorder方法的基本条件是什么?如何知道在打印完所有节点后停止?
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
答案 0 :(得分:3)
return
中的{p> return self.leftChild.inorder()
在inorder
之前结束对self
的调用,并且可以处理self.rightChild
。删除return
,该方法无论如何都不会返回任何内容。