当前位置: 代码迷 >> C语言 >> --"想你的天空"请进
  详细解决方案

--"想你的天空"请进

热度:480   发布时间:2006-06-09 01:27:59.0
--"想你的天空"请进

想你的天空:
因你那个帖子被某笨蛋管理人员错误删除.所以我来亡羊补牢!

void Cancel(struct btnode *bt,int x)
{
struct btnode *t,*t1,*t2;
int m=-1;
t=bt;
while(t!=NULL)
{
if(t->data==x) break;
else if(t->data<x) t2=t,t=t2->rchild;
else t2=t,t=t->lchild;
}

if(t!=NULL) t1=t;
else return;

if((t->rchild==NULL)&&(t->lchild==NULL))
{
if(t2->lchild==t) t2->lchild=NULL,free(t);
else t2->rchild=NULL,free(t);
}
else
{

if(t1->rchild!=NULL)
{
t1=t1->rchild,m=0 ;
while(t1->lchild!=NULL)
t2=t1,t1=t2->lchild,m=2;
}
else t1=t1->lchild,m=1;

t->data=t1->data;
if(m==0) t->rchild=t1->rchild,free(t1);
else if(m==1) t->lchild=t1->lchild,free(t1);
else if(m==2)
{
if(t->rchild==NULL) t2->lchild=NULL,free(t1);
else t2->lchild=t1->rchild,free(t1);
}
}
return;
}


以上是你的题目要求..我以整数为元素数据!.可能有的地方写法不同.请自己改正!

[此贴子已经被作者于2006-6-9 1:28:50编辑过]

搜索更多相关的解决方案: 天空  

----------------解决方案--------------------------------------------------------
  相关解决方案