“单调谓词形式把二分从查表扩展为“答案二分”:只要可行性关于参数单调(容量越大越可行之类),就能用对数次可行性判定逼出最优值,这是把判定器升级为优化器的通用手法。连续版本是实数区间上的对分法,…”
形式陈述 ​
二叉搜索树(BST)是每个结点存一个键的二叉树,键取自带全序的集合,并满足有序不变量:对任意结点
直觉
BST 是二分查找的结构化版本:有序数组靠下标计算中点,BST 则把比较路标直接铸进指针结构——每个结点是一块路牌,“小往左、大往右”,一次比较即可丢弃整棵另一侧子树。换来的收益是动态性:数组中段插入要搬移
例子与边界
依次插入
一个经典反例说明“只查父子”不够:根
推论与应用
BST 是有序字典的原型:除查找、插入、删除外,还支持最值、前驱后继与范围查询,这是哈希表不承诺的次序信息。平衡搜索树在有序不变量之上追加形状约束,把路径长度升级为最坏
节点若保存可由孩子合并的摘要,就进入搜索树增强;保存子树大小并暴露 select/rank 接口的具体结构是顺序统计树。伸展树用访问后的旋转获得摊还界,Treap用随机优先级获得期望界,它们都保留 BST 的中序不变量,却给形状加入不同的概率或序列保证。外存场景的多路 B 树再改用块占用不变量,不是二叉指针模型的直接延伸。
参考资料
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Introduction to Algorithms, 4th ed., MIT Press, 2022,Chs. 12–13, binary search trees and balancing context。
- Robert Sedgewick and Kevin Wayne, Algorithms, 4th ed., Addison-Wesley, 2011,§3.2, binary search trees。