大數(shù)據(jù)結(jié)構(gòu) 二叉樹(shù)遍歷實(shí)驗(yàn)資料報(bào)告材料

上傳人:沈*** 文檔編號(hào):86547478 上傳時(shí)間:2022-05-07 格式:DOC 頁(yè)數(shù):20 大小:383KB
收藏 版權(quán)申訴 舉報(bào) 下載
大數(shù)據(jù)結(jié)構(gòu) 二叉樹(shù)遍歷實(shí)驗(yàn)資料報(bào)告材料_第1頁(yè)
第1頁(yè) / 共20頁(yè)
大數(shù)據(jù)結(jié)構(gòu) 二叉樹(shù)遍歷實(shí)驗(yàn)資料報(bào)告材料_第2頁(yè)
第2頁(yè) / 共20頁(yè)
大數(shù)據(jù)結(jié)構(gòu) 二叉樹(shù)遍歷實(shí)驗(yàn)資料報(bào)告材料_第3頁(yè)
第3頁(yè) / 共20頁(yè)

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《大數(shù)據(jù)結(jié)構(gòu) 二叉樹(shù)遍歷實(shí)驗(yàn)資料報(bào)告材料》由會(huì)員分享,可在線閱讀,更多相關(guān)《大數(shù)據(jù)結(jié)構(gòu) 二叉樹(shù)遍歷實(shí)驗(yàn)資料報(bào)告材料(20頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、word數(shù)據(jù)結(jié)構(gòu)之二叉樹(shù)實(shí) 驗(yàn) 報(bào) 告 題目:二叉樹(shù)的遍歷和子樹(shù)交換 指導(dǎo)教師:政宇 班級(jí):通信1202 :徐江 學(xué)號(hào):0909121127需求分析1. 演示程序分別用多種遍歷算法遍歷二叉樹(shù)并把數(shù)據(jù)輸出。2. 輸入字符序列,遞歸方式建立二叉樹(shù)。3.在演示過(guò)程序中,用戶敲擊鍵盤(pán),輸入數(shù)據(jù),即可看到數(shù)據(jù)的輸出。4.實(shí)現(xiàn)鏈?zhǔn)酱鎯?chǔ)的二叉樹(shù)的多種遍歷算法。遍歷算法包括:a) 中序遞歸遍歷算法、前序遞歸遍歷算法【選】b) 中序遍歷非遞歸算法c) 先序或后序遍歷非遞歸算法d) 建立中序線索,并進(jìn)展中序遍歷和反中序遍歷6.設(shè)計(jì)一個(gè)測(cè)試用的二叉樹(shù)并創(chuàng)建對(duì)應(yīng)的存二叉樹(shù),能夠測(cè)試自己算法的邊界(包括樹(shù)節(jié)點(diǎn)數(shù)為0、1

2、以與1 的不同情形)。7.測(cè)試數(shù)據(jù):輸入數(shù)據(jù):-+a *b -c d -e f 概要設(shè)計(jì)說(shuō)明:本程序在遞歸調(diào)用中用到了鏈表,在非遞歸調(diào)用時(shí)用到了棧。1. 棧的抽象數(shù)據(jù)類型ADT Stack數(shù)據(jù)對(duì)象:D=ai|aichar,i=1,2,3.數(shù)據(jù)關(guān)系:R=| ai-1,aiD,i=2,3.根本操作:InitStack&S 操作結(jié)果:構(gòu)造一個(gè)空棧StackEmpty( S )初始條件:棧S已存在。操作結(jié)果:假設(shè)S為空棧,如此返回OK,否如此返回ERROR。 Push( &S, e )初始條件:棧S已存在。操作結(jié)果:插入元素e為新的棧頂元素。Pop( &S, &e )初始條件:棧S已存在且非空。操作結(jié)

3、果:刪除S的棧頂元素,并用e返回其值。 GetTop( S, &e )初始條件:棧S已存在且非空。操作結(jié)果:用e返回S的棧頂元素。 ADT BinaryTree 數(shù)據(jù)對(duì)象D:D是具有一樣特性的數(shù)據(jù)元素的集合。 數(shù)據(jù)關(guān)系R: 假設(shè)D=,如此R=,稱BinaryTree為空二叉樹(shù); 假設(shè)D,如此R=H,H是如下二元關(guān)系; 1在D中存在惟一的稱為根的數(shù)據(jù)元素root,它在關(guān)系H下無(wú)前驅(qū); 2假設(shè)D-root,如此存在D-root=D1,Dr,且D1Dr =; 3假設(shè)D1,如此D1中存在惟一的元素x1,H,且存在D1上的關(guān)系H1 H;假設(shè)Dr,如此Dr中存在惟一的元素xr,H,且存在上的關(guān)系Hr H;

4、H=,H1,Hr; 4(D1,H1)是一棵符合本定義的二叉樹(shù),稱為根的左子樹(shù);(Dr,Hr)是一棵符合本定義的二叉樹(shù),稱為根的右子樹(shù)。 根本操作: CreateBiTree( &T) 初始條件:給出二叉樹(shù)T的定義。 操作結(jié)果:按要求構(gòu)造二叉樹(shù)T。PreOrderTraverse_re( T, print() ) 初始條件:二叉樹(shù)T存在,print是二叉樹(shù)全部結(jié)點(diǎn)輸出的應(yīng)用函數(shù)。 操作結(jié)果:先序遞歸遍歷T,對(duì)每個(gè)結(jié)點(diǎn)調(diào)用函數(shù)print一次且僅一次。一旦 print()失敗,如此操作失敗。 InOrderTraverse( T, print() ) 初始條件:二叉樹(shù)T存在,print是二叉樹(shù)全部結(jié)

5、點(diǎn)輸出的應(yīng)用函數(shù)。 操作結(jié)果:中序非遞歸遍歷T,對(duì)每個(gè)結(jié)點(diǎn)調(diào)用函數(shù)print一次且僅一次。一旦printf()失敗,如此操作失敗。 InOrderTraverse_re(T,print() ) 初始條件:二叉樹(shù)T在在,print是二叉樹(shù)全部結(jié)點(diǎn)輸出的應(yīng)用函數(shù)。操作結(jié)果:中序遞歸遍歷T,對(duì)每個(gè)結(jié)點(diǎn)調(diào)用函數(shù)print一次且僅一次。一旦 printf()失敗,如此操作失敗。 PreOrderTraverse(T,print() 初始條件:二叉樹(shù)T存在,print是二叉樹(shù)全部結(jié)點(diǎn)輸出的應(yīng)用函數(shù)。 操作結(jié)果:先序非遞歸遍歷T,對(duì)每個(gè)結(jié)點(diǎn)調(diào)用函數(shù)print一次且僅一次。一旦print()失敗,如此操作失敗

6、。 Levelorder(T) 初始條件:二叉樹(shù)T在在。操作結(jié)果:分層遍歷二叉樹(shù)T,并輸出。InOrderThreading(Thrt,T);初始條件:二叉樹(shù)T在在。操作結(jié)果:中序遍歷二叉樹(shù),并將其中序線索化。InOrderTraverse_Thr( T, print);初始條件:二叉樹(shù)T在在。操作結(jié)果:中序非遞歸遍歷二叉線索樹(shù)TInThreading(p);初始條件:結(jié)點(diǎn)p在在。操作結(jié)果:結(jié)點(diǎn)p與子樹(shù)線索化。3.主程序的流程:void main()初始化;提示;執(zhí)行二叉數(shù)ADT函數(shù);4.本程序包含三個(gè)模塊1) 主程序模塊void main()初始化;承受命令;顯示結(jié)果;2) 鏈表模塊。遞歸調(diào)

7、用時(shí)實(shí)現(xiàn)鏈表抽象數(shù)據(jù)類型。3) 棧模塊。非遞歸調(diào)用時(shí)實(shí)現(xiàn)棧的抽象數(shù)據(jù)類型。詳細(xì)設(shè)計(jì)1.宏定義與全局變量#define TElemType char#define SElemType BiTree#define OK 1#define OVERFLOW 0#define ERROR 0#define STACK_INIT_SIZE 100#define STACKINCREMENT 10SqStack S;BiThrTree pre;BiThrTree i;int CreateBiTree(BiTree &T);/創(chuàng)建二叉樹(shù)void PreOrderTraverse_re(BiTree T,vo

8、id (*print)(TElemType e);/先序遞歸遍歷二叉樹(shù)void InOrderTraverse(BiTree T,int (*print)(TElemType e);/中序非遞歸遍歷二叉樹(shù)void InOrderTraverse_re(BiTree T,int (*print)(TElemType e) ;/中序遞歸遍歷二叉樹(shù)void PreOrderTraverse(BiTree T,int (*print)(TElemType e);/先序非遞歸遍歷二叉樹(shù)int print(TElemType e);/打印元素void InitStack(SqStack &S);/棧的初始

9、化void Pop(SqStack &S,SElemType &e);void Push(SqStack &S,SElemType &e);int StackEmpty(SqStack S);int GetTop(SqStack S,SElemType &e);void Levelorder(BiTree T) ;void InOrderThreading(BiThrTree &Thrt,BiThrTree T);int InOrderTraverse_Thr(BiThrTree T, int (*print)(TElemType e);void InThreading(BiThrTree p

10、);數(shù)據(jù)結(jié)構(gòu):typedef struct BiTNodeTElemType data;struct BiTNode *lchild ,*rchild;PointerTag LTag , RTag;BiTNode , *BiTree , BiThrNode , *BiThrTree; 根本操作:a)構(gòu)造二叉樹(shù)Tint CreateBiTree(BiTree &T)char ch;scanf(%c,&ch);if(ch= )T=NULL;elseif(!(T=(BiTNode *)malloc(sizeof(BiTNode)return ERROR;T-data=ch;if (CreateBiT

11、ree(T-lchild) T-LTag=Link;if (CreateBiTree(T-rchild) T-RTag=Link;return OK;b)先序遞歸遍歷二叉數(shù)T,并輸出全部結(jié)點(diǎn)值。void PreOrderTraverse_re(BiTree T,int (*print)(TElemType e)if(T)if(print(T-data) PreOrderTraverse_re(T-lchild,print);PreOrderTraverse_re(T-rchild,print);return ;elsereturn ;c)中序非遞歸遍歷二叉樹(shù)T,并輸出全部結(jié)點(diǎn)值void InO

12、rderTraverse(BiTree T,int (*print)(TElemType e)SqStack S;S.base=NULL;S.top=NULL;SElemType p=NULL;InitStack(S);Push(S,T);while(!StackEmpty(S)while(GetTop(S,p)&p)Push(S,p-lchild);Pop(S,p);if(!StackEmpty(S)Pop(S,p);print(p-data);Push(S,p-rchild);return;d)中序遞歸遍歷二叉樹(shù)T,并輸出全部結(jié)點(diǎn)值void InOrderTraverse_re(BiTre

13、e T,int (*print)(TElemType e) if(T) InOrderTraverse_re(T-lchild,print); print(T-data); InOrderTraverse_re(T-rchild,print); e)中序遍歷二叉樹(shù)T,并將其中序線索化,Thrt指向頭結(jié)點(diǎn) void InOrderThreading(BiThrTree &Thrt,BiThrTree T)Thrt=(BiThrTree)malloc(sizeof(BiThrNode);Thrt-LTag=Link;/建頭結(jié)點(diǎn)Thrt-RTag=Thread;Thrt-rchild=Thrt;/右

14、指針回指if(!T)Thrt-lchild=Thrt;elseThrt-lchild=T;pre=Thrt;InThreading(T);/中序遍歷進(jìn)展中序線索化pre-rchild=Thrt;pre-RTag=Thread;/最后一個(gè)結(jié)點(diǎn)線索化Thrt-rchild=pre;i=Thrt;/InOrderThreadingf)結(jié)點(diǎn)p線索化void InThreading(BiThrTree p) if (p) InThreading(p-lchild); / 左子樹(shù)線索化 if (!p-lchild) / 建前驅(qū)線索 p-LTag = Thread; p-lchild = pre; if (

15、!pre-rchild) / 建后繼線索 pre-RTag = Thread; pre-rchild = p; pre = p; / 保持pre指向p的前驅(qū) InThreading(p-rchild); / 右子樹(shù)線索化 / InThreadingg)/中序遍歷線索化二叉樹(shù)int InOrderTraverse_Thr(BiThrTree T, int (*print)(TElemType e)BiThrTree p=NULL;p=T-lchild;while(p!=T)while(p-LTag=Link)p=p-lchild;if(!print(p-data)return ERROR;whi

16、le(p-RTag=Thread & p-rchild!=T)p=p-rchild;print(p-data);p=p-rchild;return OK;數(shù)據(jù)結(jié)構(gòu):typedef structSElemType *base;SElemType *top;int stacksize;SqStack;根本操作:a)創(chuàng)建一個(gè)空棧void InitStack(SqStack &S)S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType);S.top=S.base;/初始為空S.stacksize=STACK_INIT_SIZE;return

17、;b)棧頂插入元素void Push(SqStack &S,SElemType &e)if(S.top-S.base=S.stacksize)S.base=(SElemType*)realloc(S.base,(STACK_INIT_SIZE+STACKINCREMENT)*sizeof(SElemType);S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;*S.top+=e;c)棧頂刪除元素void Pop(SqStack &S,SElemType &e)if(S.top=S.base)return;e=*-S.top;return;

18、d)判斷棧是否為空棧int StackEmpty(SqStack S)if(S.top=S.base)return OK;elsereturn ERROR;e)e返回S的棧頂元素int GetTop(SqStack S,SElemType &e)if(S.top=S.base)return ERROR;e=*(S.top-1);return OK;void main()int flag;BiTree T;BiThrTree Thrt;printf(*n);printf(* 實(shí)驗(yàn)12 二叉樹(shù)的遍歷 *n);printf(* 1. 實(shí)現(xiàn)二叉樹(shù)的不同遍歷算法和二叉樹(shù)的中序線索化算法 *n);prin

19、tf(* a) 中序遞歸遍歷算法; *n);printf(* b) 先序遞歸遍歷算法; *n);printf(* c) 中序遍歷的非遞歸算法; *n);printf(* d) 先序或后序遍歷非遞歸算法之一; *n);printf(* e) 建立中序線利用線索進(jìn)展中序遍歷和反中序遍歷。 *n);printf(* 2. 實(shí)現(xiàn)二叉樹(shù)的按層遍歷算法。 *n);printf(*n);printf(n選擇操作:nt1.先序與中序遍歷算法nt2.中序線索的中序遍歷和反中序遍歷算法nt3.按層遍歷算法n請(qǐng)選擇:);scanf(%d,&flag);switch(flag) case 1:printf(前序遞歸創(chuàng)

20、建二叉樹(shù)空格 表示此結(jié)點(diǎn)為空:n);getchar();CreateBiTree(T);printf(中序遞歸遍歷輸出:);InOrderTraverse_re(T,print);printf(n前序遞歸遍歷輸出:);PreOrderTraverse_re(T,print);printf(n中序非遞歸遍歷輸出:);InOrderTraverse(T,print);printf(n前序非遞歸遍歷輸出:);PreOrderTraverse(T,print); printf(n);break;case 2:printf(前序遞歸創(chuàng)建二叉樹(shù)空格 表示此結(jié)點(diǎn)為空:n);getchar();CreateB

21、iTree(T);printf(n中序遍歷線索化二叉樹(shù):);InOrderThreading(Thrt , T);InOrderTraverse_Thr(Thrt , print);break;case 3: printf(前序遞歸創(chuàng)建二叉樹(shù)空格 表示此結(jié)點(diǎn)為空:n);getchar();CreateBiTree(T);printf(n按層遍歷輸出:);Levelorder(T);printf(n);break;default:return;6. 函數(shù)間調(diào)用關(guān)系mainInOrderTraverse_reCreateBitreePreOrderTraverse_reInOrderTravers

22、ePreOrderTraverseInOrderThreadingInOrderTraverse_ThrThreadingStack操作調(diào)試分析1、二叉樹(shù)的分層遍歷,開(kāi)始時(shí)想用隊(duì)列來(lái)做,但考慮到比擬麻煩,因而改為數(shù)組模擬隊(duì)列,簡(jiǎn)單易懂,課后可自行嘗試用隊(duì)列來(lái)做。2 在線索化二叉樹(shù)時(shí)考慮到如果將兩種存儲(chǔ)結(jié)構(gòu)分開(kāi)將導(dǎo)致兩個(gè)類型的指針不能互相傳值,造成許多麻煩。比擬兩種存儲(chǔ)結(jié)構(gòu)發(fā)現(xiàn),線索二叉樹(shù)比二叉樹(shù)多了兩個(gè)標(biāo)志域LTag,Rtag。于是把兩種存儲(chǔ)結(jié)構(gòu)合并為BiThrNode,并在建立二叉樹(shù)時(shí)把LTag,Rtag均置為L(zhǎng)ink。程序正常運(yùn)行。 3.進(jìn)入演示程序,完成編譯,連接即按下Ctrl F5進(jìn)入

23、演示界面,或直接打開(kāi)執(zhí)行文件BiTree.exe,產(chǎn)生如如如下圖所示的界面: 用戶需根據(jù)用戶提示信息操作,輸入二叉樹(shù)以空格表示空結(jié)點(diǎn),輸入完成后按回車鍵,屏幕上打印出對(duì)應(yīng)于該二叉樹(shù)的各種遍歷結(jié)果。如如如下圖:六、 測(cè)試結(jié)果輸入:-+a *b -c d -e f 屏幕輸出:中序遞歸遍歷輸出:a+b*c-d前序遞歸遍歷輸出:+a*b-cd中序非遞歸遍歷輸出:a+b*c-d前序非遞歸遍歷輸出:+a*b-cd按層遍歷輸出:+a*b-cd中序遍歷線索化二叉樹(shù):a+b*c-d七、 附錄#include#include#define QElemType BiTNode#define TElemType ch

24、ar#define OK 1#define OVERFLOW 0#define ERROR 0#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef enum PointerTagLink,Thread;/Link=0,指針,Thread=1,線索typedef struct BiTNodeTElemType data;struct BiTNode *lchild ,*rchild;PointerTag LTag , RTag;BiTNode , *BiTree , BiThrNode , *BiThrTree;/二叉樹(shù)#defi

25、ne QElemType BiTNode#define SElemType BiTreetypedef structSElemType *base;SElemType *top;int stacksize;SqStack;/全局變量SqStack S;BiThrTree pre;BiThrTree i;/*函數(shù)聲明*/ int CreateBiTree(BiTree &T);/創(chuàng)建二叉樹(shù)void PreOrderTraverse_re(BiTree T,void (*print)(TElemType e);/先序遞歸遍歷二叉樹(shù)void InOrderTraverse(BiTree T,int

26、(*print)(TElemType e);/中序非遞歸遍歷二叉樹(shù)void InOrderTraverse_re(BiTree T,int (*print)(TElemType e) ;/中序遞歸遍歷二叉樹(shù)void PreOrderTraverse(BiTree T,int (*print)(TElemType e);/先序非遞歸遍歷二叉樹(shù)int print(TElemType e);/打印元素void InitStack(SqStack &S);/棧的初始化void Pop(SqStack &S,SElemType &e);void Push(SqStack &S,SElemType &e)

27、;int StackEmpty(SqStack S);int GetTop(SqStack S,SElemType &e);void Levelorder(BiTree T) ;void InOrderThreading(BiThrTree &Thrt,BiThrTree T);int InOrderTraverse_Thr(BiThrTree T, int (*print)(TElemType e);void InThreading(BiThrTree p);/*二叉樹(shù)的創(chuàng)建遞歸創(chuàng)建*/int CreateBiTree(BiTree &T)char ch;scanf(%c,&ch);if(c

28、h= )T=NULL;elseif(!(T=(BiTNode *)malloc(sizeof(BiTNode)return ERROR;T-data=ch;if (CreateBiTree(T-lchild) T-LTag=Link;if (CreateBiTree(T-rchild) T-RTag=Link;return OK; /*/ /* 先序遞歸遍歷輸出 */ /*/void PreOrderTraverse_re(BiTree T,int (*print)(TElemType e)if(T)if(print(T-data) PreOrderTraverse_re(T-lchild,p

29、rint);PreOrderTraverse_re(T-rchild,print);return ;elsereturn ; /*/ /* 中序非遞歸遍歷輸出 */ /*/void InOrderTraverse(BiTree T,int (*print)(TElemType e)SqStack S;S.base=NULL;S.top=NULL;SElemType p=NULL;InitStack(S);Push(S,T);while(!StackEmpty(S)while(GetTop(S,p)&p)Push(S,p-lchild);Pop(S,p);if(!StackEmpty(S)Pop

30、(S,p);print(p-data);Push(S,p-rchild);return; /*/ /* 中序遞歸遍歷輸出 */ /*/void InOrderTraverse_re(BiTree T,int (*print)(TElemType e) if(T) InOrderTraverse_re(T-lchild,print); print(T-data); InOrderTraverse_re(T-rchild,print); return ; /*/ /* 按照前序非遞歸遍歷二叉樹(shù):棧 */ /*/ void PreOrderTraverse(BiTree T,int (*print)

31、(TElemType e) SqStack S;S.base=NULL;S.top=NULL;SElemType p=T;/p指向當(dāng)前訪問(wèn)的結(jié)點(diǎn) InitStack(S); while(p|!StackEmpty(S) if(p) print(p-data); Push(S,p); p=p-lchild; else Pop(S,p); p=p-rchild; return; void InOrderThreading(BiThrTree &Thrt,BiThrTree T)/中序遍歷二叉樹(shù)T,并將其中序線索化,Thrt指向頭結(jié)點(diǎn)Thrt=(BiThrTree)malloc(sizeof(BiT

32、hrNode);Thrt-LTag=Link;/建頭結(jié)點(diǎn)Thrt-RTag=Thread;Thrt-rchild=Thrt;/右指針回指if(!T)Thrt-lchild=Thrt;elseThrt-lchild=T;pre=Thrt;InThreading(T);/中序遍歷進(jìn)展中序線索化pre-rchild=Thrt;pre-RTag=Thread;/最后一個(gè)結(jié)點(diǎn)線索化Thrt-rchild=pre;i=Thrt;/InOrderThreadingvoid InThreading(BiThrTree p) if (p) InThreading(p-lchild); / 左子樹(shù)線索化 if (

33、!p-lchild) / 建前驅(qū)線索 p-LTag = Thread; p-lchild = pre; if (!pre-rchild) / 建后繼線索 pre-RTag = Thread; pre-rchild = p; pre = p; / 保持pre指向p的前驅(qū) InThreading(p-rchild); / 右子樹(shù)線索化 / InThreadingint InOrderTraverse_Thr(BiThrTree T, int (*print)(TElemType e)/中序遍歷線索化后的二叉樹(shù)BiThrTree p=NULL;p=T-lchild;while(p!=T)while(

34、p-LTag=Link)p=p-lchild;if(!print(p-data)return ERROR;while(p-RTag=Thread & p-rchild!=T)p=p-rchild;print(p-data);p=p-rchild;return OK;/*以下為輔助函數(shù)*/int print(TElemType e)printf(%c,e);return OK;/*棧函數(shù)*/*棧的初始化*/void InitStack(SqStack &S)S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType);S.top=S.ba

35、se;/初始為空S.stacksize=STACK_INIT_SIZE;return;/*棧頂插入元素*/void Push(SqStack &S,SElemType &e)if(S.top-S.base=S.stacksize)S.base=(SElemType*)realloc(S.base,(STACK_INIT_SIZE+STACKINCREMENT)*sizeof(SElemType);S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;*S.top+=e;/*棧頂刪除元素*/void Pop(SqStack &S,SElemTy

36、pe &e)if(S.top=S.base)return;e=*-S.top;return;int StackEmpty(SqStack S)/*假設(shè)棧為空棧,如此返回OK,否如此返回ERROR*/if(S.top=S.base)return OK;elsereturn ERROR;int GetTop(SqStack S,SElemType &e)if(S.top=S.base)return ERROR;e=*(S.top-1);return OK; /*/ /* 按層次順序建立一棵二叉樹(shù) */ /*/ void Levelorder(BiTree T) int i,j; BiTNode *

37、q20,*p; /*q20用于模擬隊(duì)列,存儲(chǔ)入隊(duì)的結(jié)點(diǎn)*/ p=T; if(p!=NULL) i=1;qi=p;j=2; /*i為隊(duì)首位置,j為隊(duì)尾位置*/ while(i!=j) p=qi; printf(%c,p-data); /*訪問(wèn)隊(duì)首元素*/ if (p-lchild!=NULL) qj=p-lchild; j+; /*假設(shè)隊(duì)首元素左鏈域不為空,如此將其入隊(duì)列*/ if (p-rchild!=NULL) qj=p-rchild; j+; /*假設(shè)隊(duì)首元素右鏈域不為空,如此將其入隊(duì)列*/ i+; /*將隊(duì)首移到下一個(gè)位置*/ void main()int flag;BiTree T;B

38、iThrTree Thrt;printf(*n);printf(* 實(shí)驗(yàn)12 二叉樹(shù)的遍歷 *n);printf(* 1. 實(shí)現(xiàn)二叉樹(shù)的不同遍歷算法和二叉樹(shù)的中序線索化算法 *n);printf(* a) 中序遞歸遍歷算法; *n);printf(* b) 先序遞歸遍歷算法; *n);printf(* c) 中序遍歷的非遞歸算法; *n);printf(* d) 先序或后序遍歷非遞歸算法之一; *n);printf(* e) 建立中序線利用線索進(jìn)展中序遍歷和反中序遍歷。 *n);printf(* 2. 實(shí)現(xiàn)二叉樹(shù)的按層遍歷算法。 *n);printf(*n);/*printf(n選擇操作:nt

39、1.先序與中序遍歷算法nt2.中序線索的中序遍歷和反中序遍歷算法nt3.按層遍歷算法n請(qǐng)選擇:);scanf(%d,&flag);switch(flag)case 1:printf(前序遞歸創(chuàng)建二叉樹(shù)空格 表示此結(jié)點(diǎn)為空:n);getchar();CreateBiTree(T);printf(中序遞歸遍歷輸出:);InOrderTraverse_re(T,print);printf(n前序遞歸遍歷輸出:);PreOrderTraverse_re(T,print);printf(n中序非遞歸遍歷輸出:);InOrderTraverse(T,print);printf(n前序非遞歸遍歷輸出:);P

40、reOrderTraverse(T,print); printf(n);break;case 2:printf(前序遞歸創(chuàng)建二叉樹(shù)空格 表示此結(jié)點(diǎn)為空:n);getchar();CreateBiTree(T);printf(n中序遍歷線索化二叉樹(shù):);InOrderThreading(Thrt , T);InOrderTraverse_Thr(Thrt , print);break;case 3: printf(前序遞歸創(chuàng)建二叉樹(shù)空格 表示此結(jié)點(diǎn)為空:n);getchar();CreateBiTree(T);printf(n按層遍歷輸出:);Levelorder(T);printf(n);br

41、eak;default:return;*/printf(前序遞歸創(chuàng)建二叉樹(shù)空格 表示此結(jié)點(diǎn)為空:n);getchar();CreateBiTree(T);printf(中序遞歸遍歷輸出:);InOrderTraverse_re(T,print);printf(n前序遞歸遍歷輸出:);PreOrderTraverse_re(T,print);printf(n中序非遞歸遍歷輸出:);InOrderTraverse(T,print);printf(n前序非遞歸遍歷輸出:);PreOrderTraverse(T,print); printf(n按層遍歷輸出:);Levelorder(T);printf(n中序遍歷線索化二叉樹(shù):);InOrderThreading(Thrt , T);InOrderTraverse_Thr(Thrt , print);printf(n);while(1);return;20 / 20

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!