以随机数维护平衡,使树高期望为logn级别

不依靠旋转,只有两个核心操作merge(合并)和split(拆分)

因此可持久化

先介绍变量

 1 const int N=100005;
 2 int n;
 3 struct Node {
 4     int val,key,siz;                                                                //权值,随机权值,子树大小 
 5     int son[2];                                                                        //左右儿子(0左1右) 
 6     void res() {                                                                    //清空该节点(用于删除) 
 7         son[0]=son[1]=siz=val=key=0;
 8     }
 9 } tree[N];
10 int ins;
11 int mem[N],inm;                                                                    //内存回收池 
12 int root;
var

相关文章: