Satus 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->lchild;//重接*q的右子树
else q->lchild=s->lchild;//重接*q的左子树
delete s;
}
return TRUE;
}//Delete
【【我不懂的地方是当“左右子树均不空”的情况下的程序,它那一堆程序究竟是什么意思?可以一句一句给解释下么???感激!!!】】