目录
需求
python实现二叉搜索树实例,并实现前序中序后序遍历
二叉搜索树
- 左子树的所有节点值都小于根节点的值。
- 右子树的所有节点值都大于根节点的值。
- 左子树和右子树也都是二叉搜索树。
代码实现
class TreeNode:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
class BinaryTree:
def __init__(self, root=None):
self.root = root
def insert(self, value):
if self.root is None:
self.root = TreeNode(value)
else:
self._insert_recursive(self.root, value)
def _insert_recursive(self, node, value):
if value < node.value:
if node.left is None:
node.left = TreeNode(value)
else:
self._insert_recursive(node.left, value)
else:
if node.right is None:
node.right = TreeNode(value)
else:
self._insert_recursive(node.right, value)
def inorder_traversal(node, result=None):
if result is None:
result = []
if node:
inorder_traversal(node.left, result)
result.append(node.value)
inorder_traversal(node.right, result)
return result
def preorder_traversal(node, result=None):
if result is None:
result = []
if node:
result.append(node.value)
preorder_traversal(node.left, result)
preorder_traversal(node.right, result)
return result
def postorder_traversal(node, result=None):
if result is None:
result = []
if node:
postorder_traversal(node.left, result)
postorder_traversal(node.right, result)
result.append(node.value)
return result
if __name__ == "__main__":
# 创建二叉树实例
tree = BinaryTree()
# 插入一些值
values = [8, 3, 10, 1, 6, 14, 4, 7, 13]
for value in values:
tree.insert(value)
# 中序遍历
print("中序遍历:", inorder_traversal(tree.root))
# 前序遍历
print("前序遍历:", preorder_traversal(tree.root))
# 后序遍历
print("后序遍历:", postorder_traversal(tree.root))
输出效果

代码解释
-
节点类
TreeNode:value:节点的值。left:左子节点。right:右子节点。
-
二叉树类
BinaryTree:root:二叉树的根节点。insert:插入新值的方法,如果根节点为空则创建根节点,否则递归地插入到适当的位置。_insert_recursive:递归插入二叉搜索树节点的辅助方法。
-
遍历函数:
inorder_traversal:中序遍历方法,访问顺序为:左子树 -> 根节点 -> 右子树。preorder_traversal:前序遍历方法,访问顺序为:根节点 -> 左子树 -> 右子树。postorder_traversal:后序遍历方法,访问顺序为:左子树 -> 右子树 -> 根节点。

1281

被折叠的 条评论
为什么被折叠?



