b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

建立二叉排序树_二叉排序树的建立 c_二叉排序树的创建过程(2)

电脑杂谈  发布时间:2017-01-14 18:07:46  来源:网络整理

t=add(t,key);break;

}

case 4:

{ printf("请输入所要查找的元素的key值:");

scanf("%d",&key);

searchx(t,key);break;

}

case 5:

{ display(t);

}

}

printf("************************************************\n\n\n"); }while(a!=6);

printf("GOOD BYE!!!");

}

bitnode*creat_bt()//二叉顺序树的建立

{

int k;

bitnode*t=NULL,*s,*f;

printf("请输第%d个关键字key的值(以输入0为结束):",n);

scanf("%d",&k);

while(k!=0)

{

n++;//用于记数

s=(bitnode*)malloc(sizeof(bitnode));

s->key=k;s->lch=NULL;s->rch=NULL;

if(t==NULL)t=s;

else

{

f=search(t,k);

if(k==f->key)//已存在k元素

{

printf("\n提示:已存在该元素,请重新输入");

n--;

}

else if(k<f->key)f->lch=s;

else f->rch=s;

}

printf("请输入第%d个关键字key的值(以输入0为结束):",n); scanf("%d",&k);

}

return t;

}

bitnode*search(bitnode*root,int data) //查找是data存在与否,若不存在返回待查找data的父结点指针

{

bitnode*p=NULL,*q=root;

while(q)

{

p=q;

if(data==q->key) return q;//已存在元素

data,返回data所在的位置q

else if(data<q->key)q=q->lch;

else q=q->rch;

}

return p;//返回待查找data的父结点指针

}

void searchx(bitnode*root,int data)//判断所查找的元素data是否存在,并给出相应的提示

{

bitnode*p=NULL,*q=root;

int tag=0;

while(q && tag==0)

{

p=q;

if(data==q->key)

{ tag=1;break;}//找到元素data else if(data<q->key)q=q->lch;

else q=q->rch;

}

if(tag==1)printf("\n二叉树中 存在 所查找的元素%d",data); else printf("\n二叉树中 不存在 所查找的元素%d",data);

}

bitnode*deletex(bitnode*t,int data)//在二叉树中删除key为data的结点

{ bitnode*p,*f,*s,*q;

int flag=0;

p=t;f=NULL;

while(p!=NULL)

{ if(p->key==data)

{ flag=1;break;}

f=p;

if(p->key>data)p=p->lch;

else p=p->rch;

}

if(p==NULL)

{ printf("在此二叉树中无此值,无法完成删除操作。建立二叉排序树建立二叉排序树");

return t;//无此值


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-26292-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    每日福利
    热点图片
    拼命载入中...