rt,这个 L 和 R 最后变成 0 了,它的含义是否是将分裂途中的一些点和它的某个子节点的边断掉。
void split(int u,int x,int &L,int &R) {
if(u==0) {
L=R=0;
return ;
}
if(treap[u].key<=x) L=u,split(treap[u].rsn,x,treap[u].rsn,R);
else R=u,split(treap[u].lsn,x,L,treap[u].lsn);
updateRoot(u);
return ;
}