这是rotate的代码
void rotate(int now){
int fax=fa[now],grfax=fa[fax],son=getwhich(now);
ch[fax][son]=ch[now][son^1];
fa[ch[now][son^1]]=fax;
ch[now][son^1]=fax;
fa[fax]=now;
fa[now]=grfax;
if(grfax){
ch[grfax][ch[grfax][1]==fax]=now;
}
update(fax);
update(now);
}
我的问题是
ch[now][son^1]=fax;
这句话的含义是什么。
rotate应该是把now转上去,father直接和孙子建立关系,now和grandfa建立关系就OK了吗,为啥还要让儿子的儿子连爸爸,不理解,求解答。