首页 层序遍历二叉树

层序遍历二叉树

举报
开通vip

层序遍历二叉树#include<stdio.h>#include<stdlib.h>#include<math.h>#defineN100#defineOK1#defineERROR0typedefintStatus;typedefcharElemtype;typedefstructBitnode{ Elemtypedata; structBitnode*lchild; structBitnode*rchild;}Bitnode,*Bitree;typedefstruct{ Bitreep;}...

层序遍历二叉树
#include<stdio.h>#include<stdlib.h>#include<math.h>#defineN100#defineOK1#defineERROR0typedefintStatus;typedefcharElemtype;typedefstructBitnode{ Elemtypedata; structBitnode*lchild; structBitnode*rchild;}Bitnode,*Bitree;typedefstruct{ Bitreep;}elem,*Elem;typedefstruct{ Elembase; Elemtop;}Stack; inti=0,num=0,m=0,k,t;Bitreew;StatusPrecreatebitree(Bitree&T);voidDepth(Bitreep,intn,int&num);intLevelordertraverse(Stack&Q);StatusInitstack(Stack&Q);StatusPush(Stack&Q,Bitreee);StatusPop(Stack&Q,Bitree&q);voidmain(){ charc='^'; Bitnoder; BitreeT; StackQ; r.data=c; r.lchild=r.rchild=NULL; w=&r; Initstack(Q); printf("请输入字符(空为'^'):"); Precreatebitree(T); Depth(T,0,num); Push(Q,T); printf("\n\n\n\n将二叉树按层序输出:\n\n\n"); Levelordertraverse(Q); printf("\n\n\n\n\n\n\n\n\n\n\n\n\n");}StatusPrecreatebitree(Bitree&T){ charc; scanf("%c",&c); if(c=='^') T=NULL; else { if(!(T=(Bitree)malloc(sizeof(Bitnode)))) exit(OVERFLOW); T->data=c; Precreatebitree(T->lchild); Precreatebitree(T->rchild); } returnOK;}voidDepth(Bitreep,intn,int&num){ if(p) { n++; if(num<n) num=n; Depth(p->lchild,n,num); Depth(p->rchild,n,num); }}intLevelordertraverse(Stack&Q){ inta,j,flag=0; Bitreep; a=Pop(Q,p); if(a==1) { if(m==(int)pow(2,i)-1) { flag=1; printf("\n\n\n"); i++; } k=((int)pow(2,num-1))/((int)pow(2,i)); t=((int)pow(2,num))/((int)pow(2,i)); if(flag==1) { for(j=0;j<k;j++) printf(""); } else { for(j=0;j<t;j++) printf(""); } if(p!=NULL&&p->data!='^') printf("%c",p->data); else printf("^"); m++; if(m==(int)pow(2,num)-1) returnOK; if(!p) { for(j=0;j<2;j++) Push(Q,w); } else { Push(Q,p->lchild); Push(Q,p->rchild); } Levelordertraverse(Q); } returnOK;}StatusInitstack(Stack&Q){ Q.base=(Elem)malloc(N*sizeof(elem)); if(!Q.base) exit(ERROR); Q.top=Q.base; returnOK;}StatusPush(Stack&Q,Bitreee){ Q.top->p=e; Q.top++; returnOK;}StatusPop(Stack&Q,Bitree&q){ if(Q.base!=Q.top) { q=Q.base->p; Q.base++; returnOK; } else returnERROR;}
本文档为【层序遍历二叉树】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_370487
暂无简介~
格式:doc
大小:12KB
软件:Word
页数:4
分类:互联网
上传时间:2013-05-21
浏览量:17