📅  最后修改于: 2023-12-03 15:26:03.134000             🧑  作者: Mango
在这道题目中,我们需要熟悉二叉搜索树的相关操作,并在代码中实现它们。以下是二叉搜索树的一些基本操作:
我们可以通过以下递归函数插入节点:
class Node:
def __init__(self, data):
self.left = None
self.right = None
self.data = data
def insert_node(root, node):
if root is None:
root = node
else:
if root.data < node.data:
if root.right is None:
root.right = node
else:
insert_node(root.right, node)
else:
if root.left is None:
root.left = node
else:
insert_node(root.left, node)
我们可以通过以下递归函数删除节点:
def delete_node(root, data):
if root is None:
return root
if data < root.data:
root.left = delete_node(root.left, data)
elif data > root.data:
root.right = delete_node(root.right, data)
else:
if root.left is None:
temp = root.right
root = None
return temp
elif root.right is None:
temp = root.left
root = None
return temp
temp = get_min_value_node(root.right)
root.data = temp.data
root.right = delete_node(root.right, temp.data)
return root
def get_min_value_node(root):
current = root
while current.left is not None:
current = current.left
return current
我们可以通过以下递归函数搜索节点:
def search_node(root, data):
if root is None or root.data == data:
return root
if root.data < data:
return search_node(root.right, data)
return search_node(root.left, data)
我们可以通过以下递归函数遍历树:
def inorder_traversal(root):
if root:
inorder_traversal(root.left)
print(root.data)
inorder_traversal(root.right)
def postorder_traversal(root):
if root:
postorder_traversal(root.left)
postorder_traversal(root.right)
print(root.data)
def preorder_traversal(root):
if root:
print(root.data)
preorder_traversal(root.left)
preorder_traversal(root.right)
二叉搜索树是一种非常重要的数据结构,在程序中广泛地应用。这些操作对于程序员来说是必不可少的基本技能。