在 Python 中使用中序遍历(递归)打印二叉搜索树节点
Printing binary search tree nodes using inorder traversal (recursion) in Python
我正在尝试在二叉搜索树上实现一个简单的中序遍历方法。
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
return self.leftChild.inorder()
中的 return
在可以处理 self
和 self.rightChild
之前结束对 inorder
的调用。删除 return
s,该方法不会 return 任何东西。
我正在尝试在二叉搜索树上实现一个简单的中序遍历方法。
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
return self.leftChild.inorder()
中的 return
在可以处理 self
和 self.rightChild
之前结束对 inorder
的调用。删除 return
s,该方法不会 return 任何东西。