我的 fhq-Treap 不可能这么可爱

花絮

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

无标题

fhq-Treap 概述

oi-wiki。fhq-Treap(全称:无旋 Treap)是一种平衡二叉搜索树,结合了二叉搜索树(BST)的有序性和堆(Heap)的随机性,通过分裂(Split)与合并(Merge)操作实现所有动态集合操作,无需旋转即可维持树的平衡。码量较小而且常数并不是很大,唯一的缺点是不可以当 LCT 的辅助树(反正辅助树也是异化的 Splay,现在学 Splay 到时候还要再学一遍)。

前置知识

二叉搜索树(Tree)

  1. 空树是二叉搜索树
  2. 若它的左子树不空,则左子树为二叉搜索树且其上所有结点的值均小于它的根结点的值
  3. 若它的左子树不空,则左子树为二叉搜索树且其上所有结点的值均大于它的根结点的值

堆(Heap)

  1. 堆是完全二叉树
  2. 最大堆(大根堆/大顶堆):任意父节点的值 ≥ 其所有子节点的值,因此堆的根节点(堆顶)存储整个堆的最大值。
  3. 最小堆(小根堆/小顶堆):任意父节点的值 ≤ 其所有子节点的值,因此堆的根节点(堆顶)存储整个堆的最小值。

Treap

顾名思义,“Treap = Tree + Teap”,所以它既具有二叉搜索树的性质又具有堆的性质。Treap 的结点除了被维护的 权值之外,还附加了一个随机的优先级。其中,权值满足二叉搜索树性质,优先级满足堆性质。

posted @ 2025-11-29 13:46  _Charllote  阅读(17)  评论(0)    收藏  举报