版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)結(jié)構(gòu)之二叉樹實(shí)驗(yàn)報(bào)告題目:二叉樹的遍歷和子樹互換指導(dǎo)老師:楊政宇班級:通信1202姓名:徐江學(xué)號:需求分析演示程序分別用多種遍歷算法遍歷二叉樹并把數(shù)據(jù)輸出。輸入字符序列,遞歸方式建立二叉樹。3.在演示過程序中,用戶敲擊鍵盤,輸入數(shù)據(jù),即可看到數(shù)據(jù)的輸出。4.實(shí)現(xiàn)鏈?zhǔn)酱鎯?chǔ)的二叉樹的多種遍歷算法。遍歷算法涉及:中序遞歸遍歷算法、前序遞歸遍歷算法【選】中序遍歷非遞歸算法先序或后序遍歷非遞歸算法建立中序線索,并進(jìn)行中序遍歷和反中序遍歷5.實(shí)現(xiàn)二叉樹的按層遍歷算法6.設(shè)計(jì)一個(gè)測試用的二叉樹并創(chuàng)建相應(yīng)的內(nèi)存二叉樹,可以測試自己算法的邊界(涉及樹節(jié)點(diǎn)數(shù)為0、1以及>1的不同情形)。7.測試數(shù)據(jù):輸入數(shù)據(jù):-+a*b-cd-ef概要設(shè)計(jì)說明:本程序在遞歸調(diào)用中用到了鏈表,在非遞歸調(diào)用時(shí)用到了棧。棧的抽象數(shù)據(jù)類型ADTStack{數(shù)據(jù)對象:D={ai|ai∈char,i=1,2,3……..}數(shù)據(jù)關(guān)系:R={<ai-1,ai>|ai-1,ai∈D,i=2,3…..}基本操作:InitStack(&S)操作結(jié)果:構(gòu)造一個(gè)空棧StackEmpty(S)
?初始條件:棧S已存在。? 操作結(jié)果:若S為空棧,則返回OK,否則返回ERROR。Push(&S,e)
?初始條件:棧S已存在。
操作結(jié)果:插入元素e為新的棧頂元素。
?Pop(&S,&e)
初始條件:棧S已存在且非空。?
?操作結(jié)果:刪除S的棧頂元素,并用e返回其值。GetTop(S,&e)??初始條件:棧S已存在且非空。
?操作結(jié)果:用e返回S的棧頂元素。}2.二叉樹的抽象數(shù)據(jù)類型ADTBinaryTree{ 數(shù)據(jù)對象D:D是具有相同特性的數(shù)據(jù)元素的集合。? 數(shù)據(jù)關(guān)系R:
若D=Φ,則R=Φ,稱BinaryTree為空二叉樹;?? 若D≠Φ,則R={H},H是如下二元關(guān)系;
??(1)在D中存在惟一的稱為根的數(shù)據(jù)元素root,它在關(guān)系H下無前驅(qū);? ?(2)若D-{root}≠Φ,則存在D-{root}={D1,Dr},且D1∩Dr=Φ;
? (3)若D1≠Φ,則D1中存在惟一的元素x1,<root,x1>∈H,且存在D1上的 ??關(guān)系H1?H;若Dr≠Φ,則Dr中存在惟一的元素xr,<root,xr>∈H,且?? ?存在上的關(guān)系Hr?H;H={<root,x1>,<root,xr>,H1,Hr};
??(4)(D1,{H1})是一棵符合本定義的二叉樹,稱為根的左子樹;(Dr,{Hr})是一 ???棵符合本定義的二叉樹,稱為根的右子樹。?基本操作:
CreateBiTree(cuò)(&T)? ?初始條件:給出二叉樹T的定義。
??操作結(jié)果:按規(guī)定構(gòu)造二叉樹T。?PreOrderTraverse_re(T,print())???初始條件:二叉樹T存在,print是二叉樹所有結(jié)點(diǎn)輸出的應(yīng)用函數(shù)。
?操作結(jié)果:先序遞歸遍歷T,對每個(gè)結(jié)點(diǎn)調(diào)用函數(shù)print一次且僅一次。一旦? ?? print()失敗,則操作失敗。 InOrderTraverse(T,print())???初始條件:二叉樹T存在,print是二叉樹所有結(jié)點(diǎn)輸出的應(yīng)用函數(shù)。???操作結(jié)果:中序非遞歸遍歷T,對每個(gè)結(jié)點(diǎn)調(diào)用函數(shù)print一次且僅一次。一 ? ?旦printf()失敗,則操作失敗。InOrderTraverse_re(T,print())? 初始條件:二叉樹T在在,print是二叉樹所有結(jié)點(diǎn)輸出的應(yīng)用函數(shù)。操作結(jié)果:中序遞歸遍歷T,對每個(gè)結(jié)點(diǎn)調(diào)用函數(shù)print一次且僅一次。一旦 ? printf()失敗,則操作失敗。PreOrderTraverse(T,print())初始條件:二叉樹T存在,print是二叉樹所有結(jié)點(diǎn)輸出的應(yīng)用函數(shù)。
操作結(jié)果:先序非遞歸遍歷T,對每個(gè)結(jié)點(diǎn)調(diào)用函數(shù)print一次且僅一次。一? 旦print()失敗,則操作失敗。Levelorder(T)初始條件:二叉樹T在在。操作結(jié)果:分層遍歷二叉樹T,并輸出。InOrderThreading(Thrt,T);初始條件:二叉樹T在在。操作結(jié)果:中序遍歷二叉樹,并將其中序線索化。InOrderTraverse_Thr(T,print);初始條件:二叉樹T在在。操作結(jié)果:中序非遞歸遍歷二叉線索樹TInThreading(p);初始條件:結(jié)點(diǎn)p在在。操作結(jié)果:結(jié)點(diǎn)p及子樹線索化。3.主程序的流程:voidmain(){?初始化; 提醒;?執(zhí)行二叉數(shù)ADT函數(shù);}4.本程序包含三個(gè)模塊主程序模塊voidmain(){初始化;{接受命令;顯示結(jié)果;}}鏈表模塊。遞歸調(diào)用時(shí)實(shí)現(xiàn)鏈表抽象數(shù)據(jù)類型。棧模塊。非遞歸調(diào)用時(shí)實(shí)現(xiàn)棧的抽象數(shù)據(jù)類型。具體設(shè)計(jì)1.宏定義及全局變量#defineTElemTypechar#defineSElemTypeBiTree(cuò)#defineOK1#defineOVERFLOW0#defineERROR0#defineSTACK_INIT_SIZE100#defineSTACKINCREMENT10SqStackS;BiThrTreepre;BiThrTree(cuò)i;2.函數(shù)定義intCreat(yī)eBiTree(BiTree(cuò)&T);? ??? //創(chuàng)建二叉樹voidPreOrderTraverse_re(BiTreeT,void(*print)(TElemTypee));?//先序遞歸遍歷二叉樹voidInOrderTraverse(BiTreeT,int(*print)(TElemTypee));??//中序非遞歸遍歷二叉樹voidInOrderTraverse_re(BiTree(cuò)T,int(*print)(TElemTypee)); //中序遞歸遍歷二叉樹voidPreOrderTraverse(BiTreeT,int(*print)(TElemTypee)); //先序非遞歸遍歷二叉樹intprint(TElemTypee); //打印元素voidInitStack(SqStack&S);??? //棧的初始化voidPop(SqStack&S,SElemType&e);voidPush(SqStack&S,SElemType&e);intStackEmpty(SqStackS);intGetTop(SqStackS,SElemType&e);voidLevelorder(BiTreeT);voidInOrderThreading(BiThrTree&Thrt,BiThrTree(cuò)T);intInOrderTraverse_Thr(BiThrTree(cuò)T,int(*print)(TElemTypee));voidInThreading(BiThrTreep);3.二叉樹鏈表數(shù)據(jù)結(jié)構(gòu):typedefstructBiTNode{ TElemTypedata;?structBiTNode*lchild,*rchild;?PointerTagLTag,RTag;}BiTNode,*BiTree,BiThrNode,*BiThrTree;?基本操作:a)構(gòu)造二叉樹TintCreateBiTree(BiTree&T){ charch; scanf("%c",&ch);?if(ch=='') T=NULL; else?{??if(!(T=(BiTNode*)malloc(sizeof(BiTNode)))) ? returnERROR;? T->data=ch; if(CreateBiTree(T->lchild))T->LTag=Link;? if(CreateBiTree(T->rchild))T->RTag=Link;?} returnOK;}b)先序遞歸遍歷二叉數(shù)T,并輸出所有結(jié)點(diǎn)值。voidPreOrderTraverse_re(BiTree(cuò)T,int(*print)(TElemTypee)){?if(T) { if(print(T->data))???PreOrderTraverse_re(T->lchild,print); PreOrderTraverse_re(T->rchild,print); ?return; } else ?return;}c)中序非遞歸遍歷二叉樹T,并輸出所有結(jié)點(diǎn)值voidInOrderTraverse(BiTreeT,int(*print)(TElemTypee(cuò))){?SqStackS;?S.base=NULL;S.top=NULL;?SElemTypep=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)中序遞歸遍歷二叉樹T,并輸出所有結(jié)點(diǎn)值voidInOrderTraverse_re(BiTreeT,int(*print)(TElemTypee)){if(T){InOrderTraverse_re(T->lchild,print);print(T->data);InOrderTraverse_re(T->rchild,print);}}e)中序遍歷二叉樹T,并將其中序線索化,Thrt指向頭結(jié)點(diǎn)voidInOrderThreading(BiThrTree&Thrt,BiThrTree(cuò)T){?Thrt=(BiThrTree)malloc(sizeof(BiThrNode));?Thrt->LTag=Link;//建頭結(jié)點(diǎn)?Thrt->RTag=Thread; Thrt->rchild=Thrt;//右指針回指 if(!T)?Thrt->lchild=Thrt; else {? Thrt->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線索化voidInThreading(BiThrTreep){ if(p){ InThreading(p->lchild);//左子樹線索化?if(!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);//右子樹線索化?} }//InThreadingg)//中序遍歷線索化二叉樹intInOrderTraverse_Thr(BiThrTreeT,int(*print)(TElemTypee)){?BiThrTreep=NULL;?p=T->lchild;?while(p!=T)?{? while(p->LTag==Link)? ?p=p->lchild; if(!print(p->data))?? returnERROR; ?while(p->RTag==Thread&&p->rchild!=T) {???p=p->rchild; ? print(p->data); }??p=p->rchild;?} returnOK;}4.棧數(shù)據(jù)結(jié)構(gòu):typedefstruct{ ?SElemType*base;??SElemType*top; intstacksize;}SqStack;基本操作:a)創(chuàng)建一個(gè)空棧voidInitStack(SqStack&S){ S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType)); S.top=S.base;??//初始為空 S.stacksize=STACK_INIT_SIZE;?return;}b)棧頂插入元素voidPush(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)棧頂刪除元素voidPop(SqStack&S,SElemType&e){?if(S.top==S.base) ?return;?e=*--S.top; return;}d)判斷棧是否為空棧intStackEmpty(SqStackS) ? {?if(S.top==S.base) ?returnOK;?else??returnERROR;}e)e返回S的棧頂元素intGetTop(SqStackS,SElemType&e){?if(S.top==S.base)? returnERROR; e=*(S.top-1); returnOK;}5.主函數(shù)voidmain(){intflag; BiTreeT; BiThrTreeThrt;?printf("******************************************************\n");?printf("**實(shí)驗(yàn)12二叉樹的遍歷**\n"); printf("**1.實(shí)現(xiàn)二叉樹的不同遍歷算法和二叉樹的中序線索化算法**\n"); printf("**a)中序遞歸遍歷算法;**\n"); printf("**b)先序遞歸遍歷算法;**\n");?printf("**c)中序遍歷的非遞歸算法;**\n"); printf("**d)先序或后序遍歷非遞歸算法之一;**\n");?printf("**e)建立中序線運(yùn)用線索進(jìn)行中序遍歷和反中序遍歷。**\n");?printf("**2.實(shí)現(xiàn)二叉樹的按層遍歷算法。**\n"); printf("**********************************************************\n"); printf("\n選擇操作:\n\t1.先序與中序遍歷算法\n\t2.中序線索的中序遍歷和反中序遍歷算法\n\t3.按層遍歷算法\n請選擇:"); scanf("%d",&flag); switch(flag) {case1:?? ???printf("前序遞歸創(chuàng)建二叉樹(空格表達(dá)此結(jié)點(diǎn)為空):\n");?? getchar();? ??Creat(yī)eBiTree(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; ?case2:?printf("前序遞歸創(chuàng)建二叉樹(空格表達(dá)此結(jié)點(diǎn)為空):\n"); ??getchar();? ? CreateBiTree(cuò)(T); ? ?printf("\n中序遍歷線索化二叉樹:");?? InOrderThreading(Thrt,T); ?InOrderTraverse_Thr(Thrt,print);??? break; case3:printf("前序遞歸創(chuàng)建二叉樹(空格表達(dá)此結(jié)點(diǎn)為空):\n");??? getchar();?? ?CreateBiTree(T);? ? ? printf("\n按層遍歷輸出:");??? Levelorder(T);????printf("\n");????break;? default:return; }}函數(shù)間調(diào)用關(guān)系mainmainInOrderTraverse_reCreateBitreePreOrderTraverse_reInOrderTraversePreOrderTraverseInOrderThreadingInOrderTraverse_ThrThreadingStack操作調(diào)試分析1、二叉樹的分層遍歷,開始時(shí)想用隊(duì)列來做,但考慮到比較麻煩,因而改為數(shù)組模擬隊(duì)列,簡樸易懂,課后可自行嘗試用隊(duì)列來做。2.
在線索化二叉樹時(shí)考慮到假如將兩種存儲(chǔ)結(jié)構(gòu)分開將導(dǎo)致兩個(gè)類型的指針不能互相傳值,導(dǎo)致許多麻煩。比較兩種存儲(chǔ)結(jié)構(gòu)發(fā)現(xiàn),線索二叉樹比二叉樹多了兩個(gè)標(biāo)志域LTag,Rtag。于是把兩種存儲(chǔ)結(jié)構(gòu)合并為BiThrNode,并在建立二叉樹時(shí)把LTag,Rtag均置為Link。程序正常運(yùn)營。3.進(jìn)入演示程序BiTree.cpp,完畢編譯,連接(即按下CtrlF5)進(jìn)入演示界面,或直接打開執(zhí)行文獻(xiàn)BiTree.exe,產(chǎn)生如下圖所示的界面:用戶需根據(jù)用戶提醒信息操作,輸入二叉樹(以空格表達(dá)空結(jié)點(diǎn)),輸入完畢后按回車鍵,屏幕上打印出相應(yīng)于該二叉樹的各種遍歷結(jié)果。如下圖:測試結(jié)果輸入:-+a*b-cd-ef屏幕輸出:中序遞歸遍歷輸出:a+b*c-d前序遞歸遍歷輸出:+a*b-cd中序非遞歸遍歷輸出:a+b*c-d前序非遞歸遍歷輸出:+a*b-cd按層遍歷輸出:+a*b-cd中序遍歷線索化二叉樹:a+b*c-d附錄BiTree.cppBiTree.exe#include<stdio.h>#include<stdlib.h>#defineQElemTypeBiTNode#defineTElemTypechar#defineOK1#defineOVERFLOW0#defineERROR0#defineSTACK_INIT_SIZE100#defineSTACKINCREMENT10typedefenumPointerTag{Link,Thread};?//Link==0,指針,Thread==1,線索typedefstructBiTNode{ TElemTypedata; structBiTNode*lchild,*rchild;?PointerTagLTag,RTag;}BiTNode,*BiTree,BiThrNode,*BiThrTree; //二叉樹#defineQElemTypeBiTNode#defineSElemTypeBiTreetypedefstruct{ SElemType*base;?SElemType*top; intstacksize;}SqStack;//全局變量SqStackS;BiThrTreepre;BiThrTree(cuò)i;/*函數(shù)聲明*/intCreateBiTree(BiTree&T);? ? ?//創(chuàng)建二叉樹voidPreOrderTraverse_re(BiTreeT,void(*print)(TElemTypee)); //先序遞歸遍歷二叉樹voidInOrderTraverse(BiTreeT,int(*print)(TElemTypee)); ?//中序非遞歸遍歷二叉樹voidInOrderTraverse_re(BiTreeT,int(*print)(TElemTypee)); //中序遞歸遍歷二叉樹voidPreOrderTraverse(BiTreeT,int(*print)(TElemTypee));? //先序非遞歸遍歷二叉樹intprint(TElemTypee(cuò)); ?//打印元素voidInitStack(SqStack&S);? ??//棧的初始化voidPop(SqStack&S,SElemType&e);voidPush(SqStack&S,SElemType&e);intStackEmpty(SqStackS);intGetTop(SqStackS,SElemType&e);voidLevelorder(BiTreeT);voidInOrderThreading(BiThrTree&Thrt,BiThrTreeT);intInOrderTraverse_Thr(BiThrTreeT,int(*print)(TElemTypee));voidInThreading(BiThrTreep);/*二叉樹的創(chuàng)建遞歸創(chuàng)建*/intCreateBiTree(BiTree&T){?charch; scanf("%c",&ch);?if(ch=='')? T=NULL;?else {? if(!(T=(BiTNode*)malloc(sizeof(BiTNode)))) ?returnERROR;? T->data=ch;? if(CreateBiTree(T->lchild))T->LTag=Link;??if(CreateBiTree(T->rchild))T->RTag=Link; }?returnOK;}/*******************************************//*先序遞歸遍歷輸出*//*******************************************/voidPreOrderTraverse_re(BiTreeT,int(*print)(TElemTypee)){ if(T) { ?if(print(T->data))? ?PreOrderTraverse_re(T->lchild,print);? PreOrderTraverse_re(T->rchild,print);??return; }?else return;}/*******************************************//*中序非遞歸遍歷輸出*//*******************************************/voidInOrderTraverse(BiTreeT,int(*print)(TElemTypee)){ SqStackS; S.base=NULL;S.top=NULL;?SElemTypep=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;}/*******************************************//*中序遞歸遍歷輸出*//*******************************************/voidInOrderTraverse_re(BiTreeT,int(*print)(TElemTypee(cuò))){if(T){InOrderTraverse_re(T->lchild,print);print(T->data);InOrderTraverse_re(T->rchild,print);}return;}/*******************************************//*按照前序非遞歸遍歷二叉樹:棧*//*******************************************/voidPreOrderTraverse(BiTreeT,int(*print)(TElemTypee)){?SqStackS;?S.base=NULL;S.top=NULL; SElemTypep=T;//p指向當(dāng)前訪問的結(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;}voidInOrderThreading(BiThrTree&Thrt,BiThrTreeT)//中序遍歷二叉樹T,并將其中序線索化,Thrt指向頭結(jié)點(diǎn){ Thrt=(BiThrTree)malloc(sizeof(BiThrNode));?Thrt->LTag=Link;//建頭結(jié)點(diǎn)?Thrt->RTag=Thread; Thrt->rchild=Thrt;//右指針回指 if(!T) Thrt->lchild=Thrt; else?{??Thrt->lchild=T;? pre=Thrt;??InThreading(T);//中序遍歷進(jìn)行中序線索化 ?pre->rchild=Thrt; pre->RTag=Thread;//最后一個(gè)結(jié)點(diǎn)線索化 ?Thrt->rchild=pre; } i=Thrt;}//InOrderThreadingvoidInThreading(BiThrTreep){if(p){InThreading(p->lchild);//左子樹線索化if(!p->lchild)//建前驅(qū)線索{p->LTag=Thread;p->lchild=pre;}if(?。餽e->rchild)//建后繼線索{pre->RTag=Thread;pre->rchild=p;}pre=p;//保持pre指向p的前驅(qū)InThreading(p->rchild);//右子樹線索化}}//InThreadingintInOrderTraverse_Thr(BiThrTreeT,int(*print)(TElemTypee))//中序遍歷線索化后的二叉樹{?BiThrTreep=NULL;?p=T->lchild; while(p!=T) { while(p->LTag==Link)? ?p=p->lchild;? if(!print(p->dat(yī)a)) ?returnERROR; while(p->RTag==Thread&&p->rchild!=T)? {?? p=p->rchild; ? print(p->data);? } ?p=p->rchild;?} returnOK;}/***************************以下為輔助函數(shù)***************************************/intprint(TElemTypee){?printf("%c",e); returnOK;}/*棧函數(shù)*//*棧的初始化*/voidInitStack(SqStack&S){?S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));?S.top=S.base; ?//初始為空 S.stacksize=STACK_INIT_SIZE; return;}/*棧頂插入元素*/voidPush(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;}/*棧頂刪除元素*/voidPop(SqStack&S,SElemType&e){?if(S.top==S.base) return; e=*--S.top;?return;}intStackEmpty(SqStackS)? ?/*若棧為空棧,則返回OK,否則返回ERROR*/{ if(S.top==S.base) ?returnOK;?else? returnERROR;}intGetTop(SqStackS,SElemType&e){ if(S.top==S.base)??returnERROR;?e=*(S.top-1); returnOK;}/************************************************************//*按層次順序建立一棵二叉樹*//************************************************************/voidLevelorder(BiTree(cuò)T){inti,j;BiTNode*q[20],*p;/*q[20]用于模擬隊(duì)列,存儲(chǔ)入隊(duì)的結(jié)點(diǎn)*/p=T;if(p!=NULL){i=1;q[i]=p;j=2;}/*i為隊(duì)首位置,j為隊(duì)尾位置*/while(i!=j(luò)){p=q[i];printf("%c",p->data);/*訪問隊(duì)首元素*/if(p->lchild!=NULL){q[j]=p->lchild;j++;}/*若隊(duì)首元素左鏈域不為空,則將其入隊(duì)列*/if(p->rchild!=NULL){q[j]=p->rchild;j++;}/*若隊(duì)首元素右鏈域不為空,則將其入隊(duì)列*/i++;/*將隊(duì)首移到下一個(gè)位置*/}}voidmain(){ intflag; BiTreeT; BiThrTreeThrt; printf("**********************************************************\n");?printf("**實(shí)驗(yàn)12二叉樹的遍歷**\n");?printf("**1.實(shí)現(xiàn)二叉樹的不同遍歷算法和二叉樹的中序線索化算法**\n");?printf("**a)中序遞歸遍歷算法;**\n"); printf("**b)先序遞歸遍歷算法;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川省瀘州市瀘縣五中2024-2025學(xué)年高一(上)期末生物試卷(含答案)
- 習(xí)作:我的家人 說課稿-2024-2025學(xué)年語文四年級上冊統(tǒng)編版
- 鉬產(chǎn)品深加工技術(shù)改造產(chǎn)能提升項(xiàng)目可行性研究報(bào)告寫作模板-申批備案
- 廣西壯族自治區(qū)南寧市2024-2025學(xué)年八年級上學(xué)期期末生物試題(無答案)
- 安徽省淮北市和淮南市2025屆高三第一次質(zhì)量檢測歷史試卷(含答案)
- 陜西省寶雞市(2024年-2025年小學(xué)六年級語文)部編版期中考試((上下)學(xué)期)試卷及答案
- Unit 2 Making a Difference Developing ideas The power of good 說課稿-2023-2024學(xué)年高一英語外研版(2019)必修第三冊
- Unit 1 developing the topic-Oral communication 說課稿 2024-2025學(xué)年仁愛科普版(2024)七年級英語上冊
- 貴州黔南經(jīng)濟(jì)學(xué)院《數(shù)據(jù)結(jié)構(gòu)Ⅰ》2023-2024學(xué)年第一學(xué)期期末試卷
- 新疆塔城地區(qū)(2024年-2025年小學(xué)六年級語文)統(tǒng)編版綜合練習(xí)((上下)學(xué)期)試卷及答案
- 合肥市建筑行業(yè)施工安全生產(chǎn)標(biāo)準(zhǔn)化示范工地評選辦法
- 2025年度航空航天材料研發(fā)與應(yīng)用技術(shù)服務(wù)合同2篇
- AEO貿(mào)易安全培訓(xùn)
- 2025年中國財(cái)產(chǎn)險(xiǎn)行業(yè)市場深度分析及發(fā)展趨勢預(yù)測報(bào)告
- 巨量信息流廣告(初級)營銷師認(rèn)證考試題及答案
- 重慶市渝中區(qū)2023-2024學(xué)年八年級上學(xué)期期末考試數(shù)學(xué)試題含答案及解析
- 【MOOC】教學(xué)研究的數(shù)據(jù)處理與工具應(yīng)用-愛課程 中國大學(xué)慕課MOOC答案
- 工商企業(yè)管理畢業(yè)論文范文 工商企業(yè)管理5000論文范文
- 《小學(xué)科學(xué)實(shí)驗(yàn)創(chuàng)新》課件
- 2024年手術(shù)室護(hù)士年度工作計(jì)劃(4篇)
- 財(cái)務(wù)管理基礎(chǔ)規(guī)范操作手冊
評論
0/150
提交評論