1. 二分搜索树基础概念
二分搜索树(Binary Search Tree,简称BST)是一种基于二叉树结构的数据组织形式,它通过特定的节点排列规则实现了高效的数据检索能力。每个节点最多拥有两个子节点(左子节点和右子节点),这种结构天然适合采用分治策略进行处理。
关键特性:对于树中的任意节点,其左子树所有节点的值都小于该节点的值,而右子树所有节点的值都大于该节点的值。这一性质使得BST的中序遍历结果必然是一个有序序列。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心特性深度解析
2.1 排序性质验证
通过递归方式可以验证BST的排序性质:
python复制def is_valid_bst(node, min_val=float('-inf'), max_val=float('inf')):
if not node:
return True
if not min_val < node.val < max_val:
return False
return (is_valid_bst(node.left, min_val, node.val) and
is_valid_bst(node.right, node.val, max_val))
2.2 时间复杂度分析
BST的操作效率与树的高度直接相关:
- 平衡状态下:O(log n)
- 最坏情况(退化为链表):O(n)
| 操作类型 | 平均复杂度 | 最坏复杂度 |
|---|---|---|
| 查找 | O(log n) | O(n) |
| 插入 | O(log n) | O(n) |
| 删除 | O(log n) | O(n) |
3. 高级特性探讨
3.1 前驱与后继节点
- 前驱节点:小于当前节点的最大节点
- 后继节点:大于当前节点的最小节点
查找算法实现:
python复制def find_predecessor(node):
if node.left:
return find_max(node.left)
# 否则需要向上查找
