c语言二叉树基本操作实现_第1页
c语言二叉树基本操作实现_第2页
c语言二叉树基本操作实现_第3页
c语言二叉树基本操作实现_第4页
c语言二叉树基本操作实现_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include#include#include#definesize100tvpedefstmctbtnchardata;stmctbtn*lchild5*rcliild;btiee,*BT;mtsum;mtcount;mtlefs;voidcreateTree(BT&E)创建二叉树charch;getchaiQ;pnntfC*请输入二叉树的基本元素以*结束n);scanfC%c”、&ch);if(ch=护)E=NULL;elseB=(BT)nialloc(sizeof(btiee);if(!E)exit(O);B-data=ch;cieateTree(B-lchild);createTre

2、e(B-rchild);return;voidFiistpriiit(BT&E)递归先序遍历二叉树贞E!=NULL)printf(n%cB-data);Firstprmt(B-lchild);Firstprmt(B-rchild);voidnuddleprint(BT&E)递归中序遍历二叉树贞E!=NULL)Firstprint(B-lchild);printf(”c*B-data);Firstprmt(B-rchild);voidlastpriiit(BT&E)递归后序遍历二叉树贞E!=NULL)Firstprint(B-lchild);Firstprmt(B-rchild);printf(

3、”c*B-data);voidnuddlepriiitl(BT&E)非递归中序遍历BTp;BTstack3O;inttop=0;P=B;printf(非递归中序遍历为:n);while(p|top!=0)while(p)stacktop+=p;p=p-lcliild;p=stack-top;printf(,r%c*p-data);p=prchild;pnntf(Mn非递归中序遍历成功mtBtreeDepth(BT&E)求二叉树的深度intrdjd;return0;elserd=BtieeDepth(B-lchild);ld=BtreeDepth(B-rchild);if(rdld)return

4、ld+1;elsereturnid-rl;mtSuinLefes(BT&Bintsum)求叶子结点个数】f(E)if(B-lcluld=NULL&B-rchild=NULL)sum+;sum=SuniLefes(B-lchild,sum);sum=SuniLefes(B-icliild、sum);retuin(sum);/利用循坏队列按照层次遍历二叉树/定义队列tvpedefstmctqueueBT*base;intfront;intrear;queue;队列实现voidQueueStart(queue&Q)队列的初始化Q.base=(BT*)malloc(size*sizeof(BT);if

5、(!Q.base)exit(O);Q.front=0;Q.rear=O;voidQueueliit(queue&Q,BT&p)入队rear+1)%size=Q.front)return;Q.baseQ.reai=p;Q.reai-(Q.rear+l)%size;voidQueueOut(queue&Q.BT&p)出队printf(%cn,p-data);if(Q.realQ.front)return;p=Q.baseQ.front;Q.fiont=(Q.fiont+1)%size;实现用循环队列遍历二叉树voidleveltree(BT&E)queueS;BTp;P=B;QueueStait(

6、S);】f(P)QueueInt(S,p);while(S.reai!=S.front)QueueOut(S.p);if(p-lcluld)QueueInt(S,p-lcliild);if(p-rcliild)QueueIiit(S.p-rcluld);mtmam()BTB;intmm;pnntfCiW选择菜单项目An”);pnntf(1:创建一个二叉树5”);pnntfC*2:递归、先序、中序后序遍历二叉树5”);非递归中序遍历二叉树11);pnntf(”4:求二叉树的深度n”);pmitf(”5:求二叉树的叶子节点的个数5”);pnntfC6:利用循坏队列对二叉树进行遍历n);while(

7、scanf(H%d,&inin)?=EOF)switch(nmi)case1:createTiee(B);二叉树创建成功n”);break;case2:iiitmi;pnntf(”l:先序遍历n”);printffN:中序遍历XnJ;prmtf(H3:后序遍历n”);while(scanf(H%d,&iin)?=EOF)switch(mi)case1:Fustpnnt(B);pnntfCXn先序遍历成功n);break:case2:iniddlepiint(B);pnntfCXn中序遍历成功n);break:case3:lastprmt(B);pmitf(”n后序遍历成功n);break:prmtf(Hl:先序遍历iT);prmtf(H2:中序遍历iT);pnntf(”3:后序遍历n”);case3:nuddleprmtl(B);break;case4:count=BtreeDepth(B);二叉树的深度为:%dXncount);break;case5:lefs=SuniLefes(B,sum);二叉树的叶子节点的个数为:dn”,lefs);break;case6:leveltiee(B);break;pirntfC1请选择菜单项目1:创建一个二叉树山”);prmtf(2:递

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论