splay

void splay(int i,int tar)
{
    while(nd[i].fa!=tar){
        int j=nd[i].fa;
        if(nd[j].fa!=tar&&who(i)==who(j))
            rotate(j);
        rotate(i);
    }
    if(tar==-1) root=i;
    return;
}
View Code

这个才是正确的写法!!!

这个才是正确的写法!!!

这个才是正确的写法!!!

不要加else!!!

不要加else!!!

不要加else!!!

之前的写法(加else)插入一条链然后依次删除就会出问题(多手动模拟几次)。

insert(0);

insert(0);

......

insert(0);

insert(1);

remove(0);

remove(0);

......

remove(0);

上面那个还是假的!!!

。。。。。。

应该加else,然后再加一个rotate(x)。

posted @ 2022-11-09 15:55  Miracle_Creater  阅读(48)  评论(0)    收藏  举报