本文目录#
原理#
Treap = Tree + Heap。每个节点包含键值 key 与随机优先级 priority,满足:
- 二叉搜索树性质:左子树 key < 节点 < 右子树;
- 堆性质:父节点 priority < 子节点(最小堆)。
插入/删除使用旋转保证堆性质,从而实现期望平衡。
数据结构#
1 | class Treap { |
应用场景#
- 有序集合操作(插入、删除、秩统计);
- 动态区间问题(Treap + 延迟标记);
- 结合分裂/合并实现 Rope、可持久结构。
自检清单#
- 是否使用随机优先级确保平衡?
- 是否在操作后更新节点 size 等附加数据?
- 是否根据需求扩展为可持久 Treap 或带懒标记 Treap?
参考资料#
- CP-Algorithms Treap:https://cp-algorithms.com/data_structures/treap.html
- emaxx.ru Treap 文章
- 《Competitive Programming 3》随机化数据结构章节
本作品系原创,采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,转载请注明出处。