我的 fhq-Treap 不可能这么可爱
花絮
本来这里是应该留给 Splay 的,但是当我看到一下情景,我觉得把这里让给 fhq-Treap。

fhq-Treap 概述
见 oi-wiki。fhq-Treap(全称:无旋 Treap)是一种平衡二叉搜索树,结合了二叉搜索树(BST)的有序性和堆(Heap)的随机性,通过分裂(Split)与合并(Merge)操作实现所有动态集合操作,无需旋转即可维持树的平衡。码量较小而且常数并不是很大,唯一的缺点是不可以当 LCT 的辅助树(反正辅助树也是异化的 Splay,现在学 Splay 到时候还要再学一遍)。
前置知识
二叉搜索树(Tree)
- 空树是二叉搜索树
- 若它的左子树不空,则左子树为二叉搜索树且其上所有结点的值均小于它的根结点的值
- 若它的左子树不空,则左子树为二叉搜索树且其上所有结点的值均大于它的根结点的值
堆(Heap)
- 堆是完全二叉树
- 最大堆(大根堆/大顶堆):任意父节点的值 ≥ 其所有子节点的值,因此堆的根节点(堆顶)存储整个堆的最大值。
- 最小堆(小根堆/小顶堆):任意父节点的值 ≤ 其所有子节点的值,因此堆的根节点(堆顶)存储整个堆的最小值。
Treap
顾名思义,“Treap = Tree + Teap”,所以它既具有二叉搜索树的性质又具有堆的性质。Treap 的结点除了被维护的 权值之外,还附加了一个随机的优先级。其中,权值满足二叉搜索树性质,优先级满足堆性质。

浙公网安备 33010602011771号