




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、輸入如下二叉樹測試C語言源程序。程序運行中創(chuàng)建二叉樹時輸入結(jié)點編號順序為:A/BZA/BZ源程序如下:#include #include #include #include #define NULL 0定義空指針#define MAXCHARLENGTH 100定義結(jié)點編號字符串最人長度tvpedef stmct LnikNode二叉樹中的結(jié)點數(shù)據(jù)結(jié)構(gòu),結(jié)點編號為字符串char data MAXCHARLENGTH;stmct LiiikNode *lchild.*icluld;Node;/*先序創(chuàng)建二叉樹*輸入單個號表示無此結(jié)點*/Node *CreatBinTiee(Node *p)cha
2、rchMAXCHARLENGTH=nexitnuchu|IAXCHARLENGTH=nexit,nulliiodeNIAXCHARLENGTH=H*H;pmitf(”請輸入二叉樹中結(jié)點對應(yīng)的字符(輸入表示無此結(jié)點):”);scanff%s”,&ch);if(stiicmp(ch,nullnode)=0)p=NULL;elsep=(Node*)nialloc(sizeof(Node);meininove(p-data,ch.MAXCHARLENGTH);p-lchild=CreatBinTree(p-lchild);p-rchild=CreatBinTree(p-rchild);leturn p
3、;/*確定二叉樹的深度*變量valdeeptli保存左子樹和右子樹中的較人深度*/iiit getdeepth(Node *tiee)int valdeepth=Ojeftdeepth=Ojightdeeptli=O;if(tiee=NULL) 若指針為空,則返回valdeepth=O;leftdeepth=getdeepth(tree-lchild);iightdeepth=getdeepth(tiee-icluld); valdeepth=l+(leftdeepthnghtdeeptli?leftdeepth:rightdeepth);retuin valdeepth;嚴確定二叉樹中結(jié)點c
4、h的層數(shù)*字符串ch存儲查找結(jié)點編號,不區(qū)分人小寫*傳址參數(shù)result保存結(jié)點ch的層數(shù),result值為1時表示在相應(yīng)子樹中沒找到該結(jié)點*傳值參數(shù)lev為中間變量,初始值為1,記錄層數(shù)*/void level(Node * tree,chai *chjnt & result.iiit lev)if(tiee=NULL)result=.l; 指針為空,表示已達葉子結(jié)點,result賦值為表示沒找到回朔遞歸return;else if(stricmp(tiee-data,ch)=O)result=lev;在二叉樹中找到了結(jié)點ch,把中間變量lev中保存的到結(jié)點ch的層數(shù)存到result中后回朔
5、遞歸return;level(tree-lchild,chjesultjev+l);若子樹根結(jié)點不是查找的結(jié)點ch則遞歸調(diào)用函數(shù)level ()在左子樹中查找if(result=-l)level(tree-rchild,ch,result,lev+1);若子樹根結(jié)點不是查找的結(jié)點ch則遞歸調(diào)用函數(shù)level ()在右子樹中查找/*先序遍歷二叉樹*傳址參數(shù)num存儲二叉樹中結(jié)點個數(shù)*/void PreOrder(Node *tree,mt &num)if(tree=NULL)return;prmtf(n%s 爲(wèi) treedata); num+-r;PreOrder(tiee-lchild4ium
6、);PreOrder(tiee-rchild4ium);/*后序遍歷二叉樹*傳址參數(shù)num存儲二叉樹中結(jié)點個數(shù)*/void PostOrdei(Node *tiee,iiit &num) if(tree=NULL)retuin;PostOrder(tree-lchilcijium); PostOider(tree-rchildaium); printf”s H,tree-data); num+-r;嚴中序遍歷二叉樹*傳址參數(shù)num存儲二叉樹中結(jié)點個數(shù) */void MOrder(Node *tiee,int &num) if(tree=NULL)return;MOider(tree-lchil
7、d4ium);priiitf(M%s n,tiee-data);num+-r;MOider(tree-ichild4ium);/*統(tǒng)計二叉樹中葉子結(jié)點個數(shù)*傳址參數(shù)result存儲葉子結(jié)點個數(shù)*/void CountLeaves(Node * &result) if(tree!=NULL)if(tree-lchild=NULL)&(tree-rchild=NULL) result+;/若是葉子結(jié)點t result加一CountLeaves(tree-lchildjesult);若子樹根結(jié)點不是葉子結(jié)點,則遞歸遍歷根結(jié)點的左子樹CountLeaves(tree-icluld,re
8、sult); 若子樹根結(jié)點不是葉子結(jié)點,則遞歸遍歷 根結(jié)點的右子樹retuni;/*后序遍歷二叉樹并統(tǒng)計非葉子結(jié)點個數(shù)*傳址參數(shù)result存儲非葉子結(jié)點個數(shù)*/void CountExcludeLeaves(Node *tiee,int &result) if(tiee?=NULL)CountExcludeLeaves(tree-lchild,result); CountExcludeLeaves(tree-rchild,result); if(tree-lcliild |tree-rchild)result+;return;/*查找某個葉子結(jié)點,函數(shù)的返回值是找到的葉子結(jié)點指針 *若返回空
9、指針則表示沒找到*變量ch存儲待查找葉子結(jié)點的編號,編號是一個字符串*/Node *findleaf(Node *tiee,char *ch)Node *L=NULL?R=NULL; if(tiee?=NULL)if(tiee-lchild=NULL)&(tree-rchild=NULL) if(stiicmp(tree-dataxh)=O)return tree;elsereturn NULL;elseL=fiiidleaf(tree-lcliild.ch);R=findleaf(tiee-rcliild,ch); return LRL:R;reuini NULL;先序、中序、后序遍歷二叉樹
10、并輸出結(jié)點數(shù)目void testOider(Node *tree)int num=0;num=0;pnntf(n 叉樹先序遍歷序列為:);PreOrder(treeaium);pnntf(”n二叉樹先序遍歷結(jié)點數(shù)為:%d,num); num=0;pnntf(ii二叉樹中序遍歷序列為:”);MOrdei(tree,num);piintf(Hn中序遍歷二叉樹得結(jié)點數(shù)為:%d*num);num=O:pnntf(n二叉樹后序遍歷序列為:”);PostOidei(tree,num);pmitf(”n后序遍歷一叉樹得結(jié)點數(shù)為:%d,num);統(tǒng)計輸出葉子結(jié)點數(shù)目void testCountLeaves(N
11、ode *tree)int n=0;CountLeaves(tiee,n);pnntf(n葉子結(jié)點個數(shù)為:dn”,n);統(tǒng)計輸出非葉子結(jié)點個數(shù)void testCountExcludeLeaves(Node *tree)int n=0;CountExcludeLeaves(tree4i);pnntfC*非葉子結(jié)點個數(shù)為:dm”,n);循環(huán)查找某個結(jié)點的層數(shù)void testlevel(Node *tiee)chai- chNIAXCHARLENGTH=M*n;int n=0jesult=0jium=0;printfC1請輸入要查找的結(jié)點(輸入“exit”則結(jié)束):”); scanf(”s 役
12、ch);while(stiicmp(chj*exitn)level(tree,ch jesult, 1);if(result!=-l)prmtf(結(jié)點:s 的層數(shù)是:ch,result);elsepnntf(”二叉樹中沒有結(jié)點:%sn”,ch);pnmf(”請輸入要查找的結(jié)點(輸入“exit”則結(jié)束):”); scanf(”s 役 ch); 循環(huán)測試查找某個葉子結(jié)點并返回指針的函數(shù)void testfindleaf(Node *tree)Node *leaf=NULL;chai- chNIAXCHARLENGTH=M*n;pnntf(-n輸入要查找的葉子結(jié)點編號(輸入exit則結(jié)束):”);s
13、canf(H%sch);while(stiicmp(ch.nexitn)leaf=findleaf(tree,ch);if(leaf=NULL)prmtf(找到葉子結(jié)點:sn”,ch);elsepruitfC*葉子結(jié)點中沒有:sn”,ch);pruitfC輸入要查找的葉子結(jié)點編號(輸入“exit”則結(jié)束):”); scaiif(M%sch);void main()/主程序Node *tiee=NULL: tree=CieatBmTree(tree);創(chuàng)建二叉樹testOrder(tree);序、中序、后序遍歷序列和結(jié)點總數(shù) testCountLeaves(tree);子結(jié)點總數(shù)testCountExcludeLeaves(tiee);testCountExcludeLeaves(tiee),輸出非葉子結(jié)點總數(shù) printf(二叉樹的深度是:%d,getdeeptli(tree);樹的深度te
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉儲物流裝修委托合同模板
- 個性工作室裝修合同
- 專業(yè)母嬰護理月嫂居間合同
- 2025年度供應(yīng)鏈金融付款合同
- 2025年度口腔診所負責(zé)人免責(zé)協(xié)議書
- 2025年度股東會決議補充協(xié)議與數(shù)字化轉(zhuǎn)型及智能化升級合作協(xié)議
- 2024年學(xué)前教育行業(yè)市場運行態(tài)勢及投資戰(zhàn)略咨詢研究報告
- 電力設(shè)施定期檢查與維護流程
- 2025年程控數(shù)字交換機項目投資可行性研究分析報告
- 白色大理石行業(yè)深度研究報告
- 自動駕駛數(shù)據(jù)安全白皮書
- 工期定額-民用建筑
- 黃土地質(zhì)災(zāi)害類型及其危害性評估
- 交際德語教程第二版A1Studio[21] 課后習(xí)題參考答案
- 最新修改 班組安全管理建設(shè)--5831模式通用課件
- 氣割、電氣焊作業(yè)的應(yīng)急救援預(yù)案
- 2018年柴油機大修工程量單
- 超級精美PPT模版美國經(jīng)典ppt模板(通用珍藏版2)
- 中醫(yī)內(nèi)科方歌-八
- 氣動控制閥的定義分類及工作原理詳解
- 梯形練字格A4紙打印版
評論
0/150
提交評論