求助Splay中的单旋,旋着人废了
查看原帖
求助Splay中的单旋,旋着人废了
171487
cmll02楼主2021/2/26 08:24
inline void rotateR(Node *x)
{
	if(x->fa==NULL)return;
	int f=d(x->fa);
	x->fa->lc=x->rc;
	if(x->rc)x->rc->fa=x->fa;
	x->rc=x->fa;
	Node *q=x->fa->fa;
	x->fa->fa=x;
	x->fa=q;
	if(q)
		if(f)q->rc=x;
		else q->lc=x;
	maintain(x->rc);
	maintain(x);
	if(x->fa==NULL)root=x;
}
inline void rotateL(Node *x)
{
	if(x->fa==NULL)return;
	int f=d(x->fa);
	x->fa->rc=x->lc;
	if(x->lc)x->lc->fa=x->fa;
	x->lc=x->fa;
	Node *q=x->fa->fa;
	x->fa->fa=x;
	x->fa=q;
	if(q)
		if(f)q->rc=x;
		else q->lc=x;
	maintain(x->lc);
	maintain(x);
	if(x->fa==NULL)root=x;
}

蒙了,有时候会丢失节点,有时候又冒出随机数,感觉像哪里没判NULL,但是好像没问题啊?

2021/2/26 08:24
加载中...