跪求 B树的删除

来源:百度知道 编辑:UC知道 时间:2024/07/03 01:15:46
帮我写个过程,不胜感激!!
如果方便,将过程及其答案发到本人邮箱: liuwei3630623@163.com 不胜感激

数据结构上的啊有点忘记了,用C语言写很简单的
void Delete(BiTree *p)//删除结点
{
BiTree q,s;
if(!(*p)->r){
q=(*p);
(*p)=(*p)->l;
free(q);
}
else if(!(*p)->l){
q=(*p);
(*p)=(*p)->r;
free(q);
}
else {

/* q=(*p);
s=(*p)->l;
while(s->r) {q=s; s=s->r;}
(*p)->data=s->data;
if(q!=(*p) ) q->r=s->l;
else q->l=s->l;
free(s);
*/

q=s=(*p)->l;
while(s->r) s=s->r;
s->r=(*p)->r;
free(*p);
(*p)=q;

}
}

Status DeleteBST(BiTree *T,KeyType key)//删除树
{
if (!(*T) )
{return FALSE;}
else{
if ( EQ(key,(*T)->data)) Delete(T);
else if ( LT(key,(*T)->data)) DeleteBST( &((*T)->l), key);
else DeleteBST( &((*T)->r),key);
return TRUE;
}
}

汗 坐等标准答案

试试