当前位置:实例文章 » JAVA Web实例» [文章]手劈二叉树

手劈二叉树

发布人:shili8 发布时间:2025-02-10 20:40 阅读次数:0

**手劈二叉树**

手劈二叉树是一种常见的数据结构,用于存储和操作有序的元素集合。它通过将元素分成左右子树来实现高效的查找、插入和删除操作。

### 二叉树定义

class Node:
 def __init__(self, value):
 self.value = value self.left = None self.right = None


每个节点都包含一个值(`value`)以及指向左右子树的两个引用(`left` 和 `right`)。

### 手劈二叉树基本操作#### 插入元素
def insert(root, value):
 if root is None:
 return Node(value)
 # 如果当前值小于根节点的值,插入到左子树中 if value < root.value:
 root.left = insert(root.left, value)
 else:
 # 否则,插入到右子树中 root.right = insert(root.right, value)
 return root


#### 删除元素
def delete(root, value):
 if root is None:
 return root # 如果当前值等于根节点的值,则删除该节点 if value == root.value:
 # 如果该节点只有一个子树,直接返回另一个子树 if root.left is None:
 return root.right elif root.right is None:
 return root.left # 否则,找到最小值的父节点(即右子树中最左边的节点)
 min_node = find_min(root.right)
 # 将该最小值替换为当前根节点的值,然后删除最小值所在的子树 root.value = min_node.value root.right = delete(root.right, min_node.value)
 else:
 # 如果当前值小于根节点的值,则递归删除左子树中的该值 if value < root.value:
 root.left = delete(root.left, value)
 else:
 # 否则,递归删除右子树中的该值 root.right = delete(root.right, value)
 return rootdef find_min(node):
 while node.left is not None:
 node = node.left return node


#### 查找元素
def search(root, value):
 if root is None or root.value == value:
 return root # 如果当前值小于根节点的值,则递归查找左子树中的该值 if value < root.value:
 return search(root.left, value)
 # 否则,递归查找右子树中的该值 return search(root.right, value)


###例子
# 创建一个空的二叉树root = None# 插入一些元素root = insert(root,5)
root = insert(root,3)
root = insert(root,7)
root = insert(root,2)
root = insert(root,4)
root = insert(root,6)

# 查找某个元素print(search(root,4).value) # 输出:4# 删除某个元素root = delete(root,5)

# 查找某个元素(删除后该值不再存在)
print(search(root,5)) # 输出: None


以上是手劈二叉树的基本操作和例子。通过这些示例,可以看到手劈二叉树在插入、删除和查找元素时都表现出高效的性能。

其他信息

其他资源

Top