返回
数据结构:链式二叉树的前中后序遍历与基本操作
后端
2023-11-23 04:12:47
链式二叉树是一种利用指针实现的二叉树,其中每个节点包含指向其左子树和右子树的指针,以及存储数据项的变量。链式二叉树存储元素时,每个节点占一个存储单元,即存储二叉树中一个数据元素及其左右子树的信息。
前中后序遍历
二叉树的遍历是指从根节点出发,按照一定的规则访问树中的所有节点。最常用的三种遍历方式是前序遍历、中序遍历和后序遍历。
前序遍历 :先访问根节点,然后递归地遍历左子树,最后递归地遍历右子树。
def preorder_traversal(root):
if root is not None:
print(root.data)
preorder_traversal(root.left)
preorder_traversal(root.right)
中序遍历 :先递归地遍历左子树,然后访问根节点,最后递归地遍历右子树。
def inorder_traversal(root):
if root is not None:
inorder_traversal(root.left)
print(root.data)
inorder_traversal(root.right)
后序遍历 :先递归地遍历左子树,然后递归地遍历右子树,最后访问根节点。
def postorder_traversal(root):
if root is not None:
postorder_traversal(root.left)
postorder_traversal(root.right)
print(root.data)
基本操作
链式二叉树的基本操作包括插入、删除和搜索。
插入 :在二叉树中插入一个新节点。
def insert(root, data):
if root is None:
root = Node(data)
elif data < root.data:
insert(root.left, data)
else:
insert(root.right, data)
删除 :从二叉树中删除一个节点。
def delete(root, data):
if root is None:
return None
elif data < root.data:
root.left = delete(root.left, data)
elif data > root.data:
root.right = delete(root.right, data)
else:
if root.left is None:
return root.right
elif root.right is None:
return root.left
else:
min_node = find_min(root.right)
root.data = min_node.data
root.right = delete(root.right, min_node.data)
return root
搜索 :在二叉树中搜索一个节点。
def search(root, data):
if root is None:
return None
elif data < root.data:
return search(root.left, data)
elif data > root.data:
return search(root.right, data)
else:
return root
总结
链式二叉树是一种常用的数据结构,具有存储和查找数据等特点。链式二叉树的前中后序遍历可以帮助我们遍历树中的所有节点,而基本操作如插入、删除和搜索可以帮助我们维护树中的数据。