1. 二叉搜索树深度解析
二叉搜索树(Binary Search Tree,BST)是一种特殊的二叉树数据结构,它满足以下性质:
- 对于任意节点,其左子树所有节点的值都小于该节点的值
- 对于任意节点,其右子树所有节点的值都大于该节点的值
- 左右子树也必须是二叉搜索树
这种结构特性使得BST在查找、插入和删除操作上具有显著优势,平均时间复杂度可以达到O(log n)。在实际应用中,BST常被用于实现关联数组和有序集合。
1.1 BST的基本操作实现
查找操作是最直观的应用BST特性的操作。从根节点开始:
- 若当前节点值等于目标值,返回该节点
- 若目标值小于当前节点值,递归查找左子树
- 若目标值大于当前节点值,递归查找右子树
- 若到达空节点仍未找到,则返回不存在
python复制def search(root, val):
if not root or root.val == val:
return root
if val < root.val:
return search(root.left, val)
return search(root.right, val)
插入操作需要保持BST的性质:
- 若树为空,创建新节点作为根节点
- 比较插入值与当前节点值
- 若小于当前值且左子树为空,插入为左子节点;否则递归左子树
- 若大于当前值且右子树为空,插入为右子节点;否则递归右子树
python复制def insert(root, val):
if not root:
return TreeNode(val)
if val < root.val:
root.left = insert(root.left, val)
else:
root.right = insert(root.right, val)
return root
删除操作最为复杂,需要考虑三种情况:
- 待删除节点是叶子节点:直接删除
- 待删除节点有一个子节点:用子节点替代
- 待删除节点有两个子节点:找到右子树的最小节点替代
python复制def de
