Maple TreeMaple Tree

以多路树组织不重叠的整数索引区间。

核心约束
节点通过范围边界把索引空间分配给孩子。
适用问题
VMA 等区间索引及区间迭代。
边界与取舍
节点类型、区间修改与并发访问规则复杂。

常见操作#

n 为树中记录的范围数,h 为树高,k 为操作涉及的范围数;成本针对 Linux 6.12。

操作时间复杂度条件与说明
按索引查找范围O(h)O(h)沿多路树下降;节点内部槽位数由内核实现固定。
插入 / 覆盖范围与树高、覆盖范围数及拆分有关宽区间更新可能影响多个已有范围,不能统一写成一次 O(log⁡n)O(\log n)。
删除一个已存在范围与定位、合并和重平衡有关可能触发节点分配或释放;RCU 回收成本另计。
范围迭代与访问节点及输出范围数有关使用 mas_state 延续遍历状态,避免每次从根重新找起点。
寻找空隙由空隙元数据和搜索范围决定仅相应分配树配置维护 gap 信息。

时间与空间#

时间复杂度
点查找随树高增长;范围修改按实际影响范围计费
存储空间
O(n)O(n)

固定节点容量下按节点与范围计存储;预分配、并发锁和 RCU 生命周期另计。

工程中的应用#

1 个案例 · 附源码
基础原理参考资料

Linux 6.12 · Maple Tree范围映射、常规 API、advanced API、预分配和 gap 查找。

13 个概念