利用程序建立一個二叉樹,并實現(xiàn)各種遍歷算法_第1頁
利用程序建立一個二叉樹,并實現(xiàn)各種遍歷算法_第2頁
利用程序建立一個二叉樹,并實現(xiàn)各種遍歷算法_第3頁
利用程序建立一個二叉樹,并實現(xiàn)各種遍歷算法_第4頁
利用程序建立一個二叉樹,并實現(xiàn)各種遍歷算法_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、請輸入字符,以0作為每個節(jié)點的結(jié)束標(biāo)志:i請輸入字符,以0作為每個節(jié)點的結(jié)束標(biāo)志淚請輸入字符,以0作為每個節(jié)點的結(jié)束標(biāo)志淚請輸入字符,以0作為每個節(jié)點的結(jié)束標(biāo)志淚先根序列:datat1=adatat 21=bdatat31= ddatat41= cdataL51= edatat63 =gdatat 71=i中根序列:dataL13 =ddata】2 =bdataL3 = adataL4= edataL51=gdataL63 =idata】71=c后根序列:datat13 =ddata】21=bdatat31= idatat41= gdatat51= edatat63 =cdata】71=a請輸

2、入字符,以0作為每個節(jié)點的結(jié)束標(biāo)志5 請輸入字符,以0作為每個節(jié)點的結(jié)束標(biāo)志:h 請輸入字符,以0作為每個節(jié)點的結(jié)束標(biāo)志記 請輸入字符,以0作為每個節(jié)點的結(jié)束標(biāo)志淚 請輸入字符,以0作為每個節(jié)點的結(jié)束標(biāo)志咱 請輸入字符,以0作為每個節(jié)點的結(jié)束標(biāo)志淚 請輸入字符,以0作為每個節(jié)點的結(jié)束標(biāo)志“ 請輸入字符,以0作為每個節(jié)點的結(jié)束標(biāo)志“ 請輸入字符,以0作為每個節(jié)點的結(jié)束標(biāo)志咱 請輸入字符,以0作為每個節(jié)點的結(jié)束標(biāo)志也 請輸入字符,以0作為每個節(jié)點的結(jié)束標(biāo)志 請輸入字符,以0作為每個節(jié)點的結(jié)束標(biāo)志:i請輸入字符,以0作為每個節(jié)點的結(jié)束標(biāo)志汨請輸入字符,以0作為每個節(jié)點的結(jié)束標(biāo)志:i請輸入字符,以0作

3、為每個節(jié)點的結(jié)束標(biāo)志淚請輸入字符,以0作為每個節(jié)點的結(jié)束標(biāo)志淚請輸入字符,以0作為每個節(jié)點的結(jié)束標(biāo)志淚先根序列:dataE 11= a datat 21= b datat 31= d datat 41= c datat 5 = edata T fi 1 = a data T 7 T = i能矗KM字符的處理模式ttinclude ttinclude 能矗KM字符的處理模式為了増強程序的多珂 當(dāng)CHAR沒有皺定乂時數(shù)據(jù)類塑苗注義ttiFdeF CHARtypedeF char datatype; ttelsetypedeF int datatype; ttendiFtypedeF struct

4、node1datatype data;struct node *lchild,*rchild; Jbitree;bitree *root;int n;char c;創(chuàng)建二叉樹bitree *creat_preorder() _bitree *t;datatype x;ttiFdeF CHARPrintF(ntt請輸入字符,以乍為每個節(jié)點的結(jié)束標(biāo)志:“); scanFfc,&x);/ FFlush(stdin);/清除緩沖區(qū)While(c=getchar()? = n&c?=EOF);清除緩沖區(qū)另外的方法 iF(x=0)t=NULL;#elseprintF(ntt請輸入正整數(shù)以酬乍為結(jié)束標(biāo)志:)

5、; scanFCd&x);iF(x=O)t=NULL;ttendiFelsedata=x;t-lchild=creat_preorder(); t-rchild=creat_preorder(); _return(t);丨return(t);先根遍歷算法void preorder(bitree *t)if(t?=NULL)n=n+1;ttiFdeF CHARprintF(,tdata%2d=%3c,n,t-data); ttelseprintF(,tdata%2d=%3d,n,t-data); ttendiFiF(n%5=0)printF(,n,lchild); preorder(t-rchi

6、ld);中根遍歷算法void inorder(bitree *t)if(t?=NULL)lchild);n=n+1;ttiFdeF CHARprintF(,tdata%2d=%3c,n,t-data); ttelseprintF(,tdata%2d=%3d,n,t-data); ttendiFiF(n%5=0)printF(,n,rchild);后根遍歷算法void postorder(bitree *t)rchild);后根遍歷算法uoid postorder(bitree *t)if(t!=NULL)lchild); postorder(t-rchild); n=n+1;ttifdeF C

7、HAR printF(,tdata2d=3c,n,t-data); ttelse printF(,tdata2d=3d,n,t-data); ttendiFiF(n5=0)printF(,n);main()bitree *bintree=creat_preorder(); printf(n$fc根序列:nn); preorder(bintree);n=B;printf(n中根序列:nn); inorder(bintree);n=8;printf(njq根序列:nn); postorder(bintree);n=8;printf(nn); return 0;一、問題需求分析利用程序建立一個二叉樹

8、,并實現(xiàn)各種遍歷算法。二、算法選擇 二叉樹的建立 二叉樹建立的方法有很多種,最常用的是采用遞歸的先根次序來建立,這次的實驗就是采用 此算法。二叉樹的遍歷二叉樹的遍歷有常用的三種方法,分別是:先根次序、中根次序、后根次序。為了驗證這幾 種遍歷算法的區(qū)別,本次的實驗將會實現(xiàn)所有的算法。遍歷的時候,把結(jié)點的信息打印出來,為了讓結(jié)點的信息更容易區(qū)別,在每個結(jié)點前加上數(shù) 字標(biāo)識。如:datal=A,data2=B.實現(xiàn)的算法皆為遞歸算法。三、分情況處理的實現(xiàn)由于算法需要同時實現(xiàn)出來字符型數(shù)據(jù)和整形數(shù)據(jù),這兩種數(shù)據(jù)處理過程中,對輸入和輸出 的處理會有所不同,為了實現(xiàn)這個功能,采用#ifdef和#else的代碼選擇方法。代碼示例:#def

溫馨提示

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

評論

0/150

提交評論