二叉搜索树的删除操作pta
时间: 2025-01-10 11:10:27 浏览: 46
二叉搜索树(Binary Search Tree, BST)的删除操作涉及到对节点的查找、替换或删除等复杂步骤,因为需要保持BST的特性——对于任意节点,其左子树的所有节点值都小于它,右子树的所有节点值大于它。删除操作一般分为以下三种情况:
1. 删除的节点是叶子节点(没有孩子):直接移除该节点即可。
2. 删除的节点只有一个子节点:将该节点的子节点替换到删除的位置,然后删除该子节点。
3. 删除的节点有两个子节点(有左右两个孩子):找到该节点右子树中的最小节点(或左子树的最大节点),将其值替换到删除节点,然后递归地在替换后的子树中删除这个最小或最大节点。
删除过程需要注意保持BST的性质,并处理好节点的空缺以及后续节点的调整。以下是删除操作的一般伪代码:
```python
def delete_node(root, key):
if root is None:
return root
# 如果键小于当前节点,就在左子树里找
if key < root.val:
root.left = delete_node(root.left, key)
# 如果键大于当前节点,就在右子树里找
elif key > root.val:
root.right = delete_node(root.right, key)
# 找到了要删除的节点
else:
# 情况3:有两个子节点
if root.left and root.right:
min_node = find_min(root.right)
root.val = min_node.val
root.right = delete_node(root.right, min_node.val)
# 情况1或2:有一个子节点或无子节点
else:
temp = root.left if root.left else root.right
root = None if temp is None else temp
return root
```
阅读全文
相关推荐


















