二叉樹的建立、遍歷、各種算法

二叉樹的建立、遍歷、各種算法

ID:38648577

大?。?5.00 KB

頁數(shù):13頁

時(shí)間:2019-06-17

二叉樹的建立、遍歷、各種算法_第1頁
二叉樹的建立、遍歷、各種算法_第2頁
二叉樹的建立、遍歷、各種算法_第3頁
二叉樹的建立、遍歷、各種算法_第4頁
二叉樹的建立、遍歷、各種算法_第5頁
資源描述:

《二叉樹的建立、遍歷、各種算法》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、基于二叉樹的二叉鏈表存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)以下操作:1、用先序遍歷創(chuàng)建二叉樹2、對(duì)二叉樹進(jìn)行非遞歸遍歷(先序、中序、后序)3、求二叉樹所有結(jié)點(diǎn)和葉子結(jié)點(diǎn)個(gè)數(shù)4、求二叉樹的深度5、#include"stdio.h"#include"malloc.h"#include"math.h"#include"stdlib.h"#defineOK1#defineERROR0#defineTRUE1#defineFALSE0//#defineOVERFLOW#defineNULL0typedefintStatus;type

2、defcharTElemType;typedefstructBiTNode{TElemTypedata;structBiTNode*lchild,*rchild;}BiTNode,*BiTree;typedefBiTreeSElemType;//tepedefBiNodeSElemType;//#defineMAX_TREE_SIZE100//typedefTElemtypeSqBiTree[MAX_TREE_SIZE];//SqBiTreebt;typedefstruct{SElemType*b

3、ase;SElemType*top;intstacksize;}SqStack;#defineSTACK_INIT_SIZE100#defineSTACKINCREMENT10StatusInitStack(SqStack&S){S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));if(!S.base)exit(OVERFLOW);S.top=S.base;S.stacksize=STACK_INIT_SIZE;returnOK

4、;}StatusGetTop(SqStackS,SElemType&e){if(S.top==S.base)returnERROR;e=*(S.top-1);returnOK;}StatusPush(SqStack&S,SElemTypee){if(S.top-S.base>=S.stacksize){S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));if(!S.base)exit(O

5、VERFLOW);S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;}*S.top++=e;returnOK;}StatusPop(SqStack&S,SElemType&e){if(S.top==S.base)returnERROR;e=*--S.top;returnOK;}StatusStackEmpty(SqStackS){if(S.top==S.base)returnTRUE;elsereturnFALSE;}StatusCreate

6、BiTree(BiTree&T){//按先序次序輸入二叉樹中結(jié)點(diǎn)的值(一個(gè)字符),空格字符表示空樹,//構(gòu)造二叉鏈表表示的二叉樹T。charch;scanf("%c",&ch);if(ch=='@')T=NULL;else{if(!(T=(BiTNode*)malloc(sizeof(BiTNode))))exit(OVERFLOW);T->data=ch;CreateBiTree(T->lchild);CreateBiTree(T->rchild);}returnOK;}//CreateBiTr

7、eeStatusPreoderTraverse(BiTreeT){//二叉樹先序遍歷非遞歸算法SqStackS;BiTreep;InitStack(S);p=T;while(p

8、

9、!StackEmpty(S)){if(p){printf("%ct",p->data);p=p->lchild;Push(S,p->rchild);}elsePop(S,p);}returnOK;}//PostoderTraverseStatusInoderTraverse(BiTreeT){//二叉樹中序遍歷非遞歸算

10、法SqStackS;BiTreep;InitStack(S);p=T;while(p

11、

12、!StackEmpty(S)){if(p){Push(S,p);p=p->lchild;}else{Pop(S,p);printf("%ct",p->data);p=p->rchild;}}returnOK;}//InoderTraverse//Algorithm:先沿著左指針走到二叉樹中最左下的結(jié)點(diǎn),將沿途經(jīng)過的根節(jié)點(diǎn)指針進(jìn)//棧,若右子樹為空,則彈棧并訪問根節(jié)點(diǎn),否則,跳到右子樹上。///

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。