二叉树的建立及几种简单的遍历方法

上传人:re****.1 文档编号:477409186 上传时间:2023-05-02 格式:DOC 页数:8 大小:21.50KB
返回 下载 相关 举报
二叉树的建立及几种简单的遍历方法_第1页
第1页 / 共8页
二叉树的建立及几种简单的遍历方法_第2页
第2页 / 共8页
二叉树的建立及几种简单的遍历方法_第3页
第3页 / 共8页
二叉树的建立及几种简单的遍历方法_第4页
第4页 / 共8页
二叉树的建立及几种简单的遍历方法_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《二叉树的建立及几种简单的遍历方法》由会员分享,可在线阅读,更多相关《二叉树的建立及几种简单的遍历方法(8页珍藏版)》请在金锄头文库上搜索。

1、incl tdio.h#ncude sdlib.hef STACKINT_IZE10/栈存储空间初始分派量efine STACICRMET 10 /存储空间分派增量/-二叉树的存储构造表达-/ypdetru BiTNodein dat;truct BTode *lchld,*rchild;BiTNde,*BiTre;/-顺序栈的存储构造表达-/typedef structBiTre *top;iTre *ase;n stacksize;Sack; /*/构造一种空栈sqtack IniSack();/创立一颗二叉树 iTree CrtBiTree();/判断栈空 t StackEmty(SqS

2、tck *);/插入元素e为新的栈顶元素 void Psh(qSack *,iTe p);/若栈不为空,则删除s栈顶的元素e,将插入到链表L中 void Pp(Sac S,BTee*q);/非递归先序遍历二叉树 void PreOdeTraee(BiTreeL);/非递归中序遍历二叉树 v InOrrTraverse(BiTee L);/非递归后序遍历二叉树 vod PosOreraverse(BiTre );/递归后序遍历二叉树 oi ostOrder(BiTrebt);/递归中序遍历二叉树 vidIrdr(iTrbt);/递归先序遍历二叉树 vd reOrer(iTree t);/*nt

3、n()BiTreebt; n,k;prntf(reat Tree ad te endwth );btCetBTree(); /创立二叉树opritf(1.PreOrderrvers2.InOrderTvere.ostdraverse4.PoOrder5.nOder 6.PrOrde);printf(plasenput num to n:);sca(%d,n);itch(n)ce 1:PeOrdrTarse(b);prinf(n);brek; /先序遍历非递归算法cas 2:InOrdrTravrse(bt);prntf(n);break; 中序非递归遍历算法case:PtrerTaves(bt

4、);nt(n); reak; /后序非递归遍历算法cae4:PostOrde(bt);rintf(n);brk; /后序递归遍历算法case : InOrder(b);prif(n);brea; /中序递归遍历算法cae 6: PrOrder(b);pritf(n);reak; /先序递归遍历算法print(iy want tcontinue,laseinpt a um0 to k:);cnf(d,&);while(k0);retun ;qStack IntSck() /构造一种空栈Sqck S;S=(SSack *)aoc(size(qSta));S-base=(BiTree *)mallo

5、c(STACKINIT_IZ*sizeof (iTee);S-oS-base;S-sacksze CK_INIT_SZE;retrn S;BiTe CeatBiTree() /先序方式递归方式建立一种二叉树har k;BiTee T;k=etchr();f(k=.)TUL;elsT(BiTNoe *)alc(izeof(BiTNoe);T-datak;T-lchi=Catree();T-rcld=CeaBTree();retnT; vod Pus(qtak *,BTe) /插入二叉树的结点地址为栈顶的新元素if(S-tp-S-as=S-sacsze)S-ae=(BiTre*)eal(S-bas

6、e,(S-stacksie+SACKINCRENT)*ief(iTee);S-topS-e+S-stacsie;Sstacksize=STACKIT;*S-top=p;S-p+;vid Pp(Sqck *S,iTree*q) /二叉树的结点地址出栈返回,做为新二叉树的目前地址if(S-base=-top)exit(0);-o-;*q=*S-tp;it StackEmpty(SqStack S) / 若栈S为空栈,则返回,否则返回0 i(S-top= e) reurn1;se rturn 0;od PrerdrTrarse(Bire L) /非先序遍历二叉树Be T;Sqtack *S;=Ini

7、tStack();=L;while(!SckEmpty()|T!=ULL)if(T!=NLL)rnf(%c,-daa);Push(S,T); T=T-lcid; /根指针进栈,遍历左子树lse /根指针退栈,访问根结点,遍历右子树Pp(S,&);T=Trchild;void nOrerTravers(iTree L) /非先序遍历二叉树iTre T;qSta *S;S=InitStak();T=L;wil(!StackEmpty(S)|T!NUL)i(T!=NUL)Push(S,T);T=lcild; /根指针进栈,遍历左子树ee 根指针退栈,访问根结点,遍历右子树Pp(S,&);prin(%

8、,T-data);=rcd;voidPsOrdrTare(iTee )/非后序遍历二叉树Bee T;qSa *S;=IitSac();=;while(!akEty(S)|T!ULL)if(T!=ULL)Psh(S,T); T-lcld; /根指针进栈,遍历左子树else /根指针退栈,访问根结点,遍历右子树Po(S,);pitf(c,Tdata);T=-rcld;id Pstder(BiTeebt)if(t=NULL)retur;osOder(t-lhild);PostOrde(btrchil);printf(%c,btdata);void IOdr(iTree bt)if(b=NLL)retr;InOrde(t-lchild);prin(%,t-ta);nrder(b-rchd);od Pre(ir bt)f(bt=NLL)return;prntf(,bt-data);PreOrd(b-lcil);Prerder(btrcild);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号