二叉排序树删除节点的操作
void Delete(Bitree &p){//从二叉排序树中删除节点p,并重接它的左或右子树
if(!p->rchild)//右子树空则只需重接它的左或右字数
{
q=p;p=p->lchild;
free(q);
}
else if(!p->lchild)//只需重接它的右子树
{
q=p;
p=p->rchild;
free(q);
}
else//左右字数均不空
{
q=p;
s=p->lchild;
while(s->rchild)
{//转左,然后向右到尽头
q=s;
s=s->rchild
}
p->data=s->data; //s指向被删除节点的前驱
if(q!=p) q->rchild=s->lchile; //重接*q的柚子树
else q->lchild=s->lchild;//重接*q的左子树
}
}
上面红体字部分是什么意思,看不懂