区间树Interval tree

为区间集合维护可剪枝的边界信息。

核心约束
子树摘要必须正确反映区间范围。
适用问题
地址重叠、范围冲突、区间检索。
边界与取舍
与只处理不重叠区间的结构具有不同约束。

常见操作#

n 为区间数,k 为命中数;这里区分增强搜索树与静态中心区间树。

操作时间复杂度条件与说明
增强平衡树:插入 / 删除O(log⁡n)O(\log n)按区间起点排序,节点维护子树最大终点,旋转后更新增广信息。
增强平衡树:找一个相交区间O(log⁡n)O(\log n)用子树最大终点剪枝;底层树保持平衡。
增强平衡树:枚举所有相交区间最坏 O(n)O(n)具体输出界取决于增广、查询类型与遍历方式;不能把所有区间树都写成 O(log⁡n+k)O(\log n+k)。
静态中心区间树:点刺查询O(log⁡n+k)O(\log n+k)每节点保存按左右端点分别排序的跨中心区间;这是另一种表示。

时间与空间#

时间复杂度
成本由区间树变体及查询类型决定
存储空间
O(n)O(n)

相交区间数量本身可达到 n;“找到一个”与“报告全部”应分开比较。

基础原理参考资料

Linux 6.12 · Augmented rbtree interval examplemax endpoint 增广、区间相交查找与更新回调。

CGAL · Interval Skip List对照另一类区间报告结构,说明输出规模和随机化前提。

David Mount · Interval Trees课程讲义第 147 页起:按中心划分、左右端点列表与点刺查询的输出敏感界。

13 个概念