在数据结构中,二叉搜索树(Binary Search Tree, 简称BST)是一种非常重要的树形结构。它具有左子树所有节点值小于根节点、右子树所有节点值大于根节点的特性,使得查找、插入和删除操作都非常高效。
今天,我们将重点讲解如何用Python语言实现BST删除操作。即使你是编程小白,只要理解了基本的递归思想,也能轻松掌握!

删除BST中的一个节点时,需要考虑以下三种情况:
首先,我们定义BST的节点类:
class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right接下来,我们实现删除函数。核心思路是递归地查找目标节点,并根据上述三种情况进行处理:
def deleteNode(root, key): # 基本情况:如果根为空,说明没找到要删除的节点 if not root: return root # 如果key小于当前节点值,去左子树找 if key < root.val: root.left = deleteNode(root.left, key) # 如果key大于当前节点值,去右子树找 elif key > root.val: root.right = deleteNode(root.right, key) # 找到了要删除的节点 else: # 情况1:没有左子树,返回右子树 if not root.left: return root.right # 情况2:没有右子树,返回左子树 elif not root.right: return root.left # 情况3:左右子树都存在 # 找到右子树中的最小值(中序后继) min_node = findMin(root.right) # 用后继节点的值替换当前节点的值 root.val = min_node.val # 删除后继节点 root.right = deleteNode(root.right, min_node.val) return rootdef findMin(node): # 找到以node为根的子树中的最小值节点 while node.left: node = node.left return node- 当 key < root.val 时,递归处理左子树;当 key > root.val 时,递归处理右子树。
- 如果找到了要删除的节点(key == root.val):
# 构建一个简单的BSTroot = TreeNode(5)root.left = TreeNode(3)root.right = TreeNode(6)root.left.left = TreeNode(2)root.left.right = TreeNode(4)root.right.right = TreeNode(7)# 删除节点3(有两个子节点)root = deleteNode(root, 3)# 此时树中不再有3,而是用4替换了3的位置通过本文,你已经掌握了用Python实现BST删除操作的核心逻辑。无论是面试还是实际开发,二叉搜索树删除操作都是数据结构中的经典问题。
记住三种删除情况,并熟练使用递归思想,你就能轻松应对这类问题。希望这篇教程能帮助你深入理解Python BST删除的实现细节!
关键词回顾:Python BST删除、二叉搜索树删除操作、Python实现BST删除、数据结构BST删除。
本文由主机测评网于2025-12-20发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/20251210618.html