关于笛卡尔树及Treap的线性构造法

前言

大家到知道笛卡尔树。
而且我们也可以把treap当作笛卡尔树。
现在将介绍笛卡尔树的线性构造法。

线性构造

维护笛卡尔树从根开始一直往右走的那一条链,这个用单调栈维护。
每次往栈顶的右儿子加点。
然后类似treap一样,就是模拟treap的旋转。
可以看代码理解。

fo(i,1,n){
        j=0;
        while (top&&fix[i]<fix[sta[top]]){  right[sta[top]]=j; j=sta[top]; left[i]=sta[top]; top--; } if (top) right[sta[top]]=i; sta[++top]=i; }

由于我比较懒所以没有详细介绍。
可以看这里,有图非旋转treap及可持久化

你可能感兴趣的:(关于笛卡尔树及Treap的线性构造法)