




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、一、實驗目的和要求(1)掌握樹的相關概念,包括樹、節(jié)點的度、樹的度、分支節(jié)點、葉子節(jié)點、孩子節(jié)點、雙親節(jié) 點、樹的深度、森林等定義。(2)掌握樹的表示,包括樹形表示法、文氏圖表示法、凹入表示法和括號表示法等。(3)掌握二叉樹的概念,包括二叉樹、滿二叉樹和完全二叉樹的定義。(4)掌握二叉樹的性質(zhì)。(5)重點掌握二叉樹的存儲結(jié)構(gòu),包括二叉樹順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)。(6)重點掌握二叉樹的基本運算和各種遍歷算法的實現(xiàn)。(7)掌握線索二叉樹的概念和相關算法的實現(xiàn)。(8)掌握哈夫曼樹的定義、哈夫曼樹的構(gòu)造過程和哈夫曼編碼的產(chǎn)生方法。(9)掌握并查集的相關概念和算法。(10)靈活運用二叉樹這種數(shù)據(jù)結(jié)構(gòu)解
2、決一些綜合應用問題。二、實驗內(nèi)容注:二叉樹b為如圖7-123所示的一棵二叉樹圖7-123小實瞼 編寫一個程序,實現(xiàn)二叉樹的各種運算,并在此基礎上設計一個程序完成如下功能:(1)輸出二叉樹b;(2)輸出H節(jié)點的左、右孩子節(jié)點值;(3)輸出二叉樹b的深度;(4)輸出二叉樹b的寬度;(5)輸出二叉樹b的節(jié)點個數(shù);(6)輸出二叉樹b的葉子節(jié)點個數(shù)。實驗 設計一個程序,實現(xiàn)二叉樹的先序遍歷、中序遍歷和后序遍歷和非遞歸算法,以及層次變量 里的算法。并對圖7723所示的二叉樹b給出求解結(jié)果。實驗 對如圖7723所示的二叉樹,設計一個程序,完成如下功能:(1)輸出所有的葉子節(jié)點;(2)輸出所有從葉子節(jié)點到根節(jié)
3、點的路徑;(3)輸出(2)中的第一條最長的路徑。三、實驗過程描述實現(xiàn)二叉樹的各種的基礎程序如下:-IQ*include <stdio.h> ttincludp <nalloc.h> ndeFine naxsize *100 typedoF char ElenFype; struct node ( newType data;效器元素struct node «lchlld;他向至保子struct node «rchil(l;指向若碇字> BTHorfp; uoid CreateBTNode(BTNode «&L9char
4、1;str)由65串倉除二又排(BTNodn »S tNaxS izt.p-HULL; int tup=-1,kfj=0; char ch; b-NUl L ;建文的二叉樹初始時為空ch-strj); uM】p(ch?-n-)乍t冰掃描完葉布環(huán)< sifitcn(ch) < case ,( :t(jp*;Sttop=p;k=1; bredk;為左結(jié)點case ) stop:broak: cas-ite:k-2; break;為右結(jié)點default:p=(BTNo0。 *)mlloc(sizeoF(BTNud«); p->data-ch;p >lchi
5、ld-p->rchild-NULL; if (b=HIJUI )pftj向二叉樹的根結(jié)點b=P; else已建立二叉樹服結(jié)點< switch(k) < casF 1 :Stto|>->lchild-p;brpdk ; case 2:Sttop |->rchiid-p;Dreok;Zl1J %loj2d勺 UcoY-l.cppch=strjl;BTMude «FlndNude(BTNude b,ElenType x) 返叵如匕域為乂的空點指價 (RTNod? «p;if (b»NULL)return HULL:fIsp if (b
6、-data二二x)return b; else <pFlndNode(b->icniid,x);if (p?-MULl)return p; elsereturn FindHode(b->rchild9x);BTHode <childHode(BTHode «p)返回“若啟的左孩子結(jié)點右針(return p >lchild; >BTNude <RchildNude(BTNodt *p)返回P潔點的右蒞孑怙點?§針(return p->rchilci; >int BINodpDepthCBrNode «b) 求二叉
7、樹t>的深殳 (Int ichllMep9rchliddop;三花的蒼度為Qif (b-HULI )3© £tl, eppbJlx return LdJ O16Qrpfllrn® int Hoaes-BTNO<w 占) 、界Il泗就 Ds漆>Qr今等 1=L nu9r=ull2;:a:NULLrpfll_n®11SQ if (Dvlxnila2NULL s. Dvrxb二OSNULL)returnlea,15e八nu9:H0de5(blchild5num Nod噂xbivrchilcl;mnnm.l; int LCWNOaQEB-Noa
8、e g) 、毋llM±D 字耳并"壽 inL nu91nu92;1+ (D:NULLrzu_n®個一二(bk?n.u:NULL 爾 7>rc - lllu:NULcreturn 1 一nunLe0FHOde5?>lchildrnum2HLem FHC】d,sbrc:hild);return LnuE;EL 2n實驗程序如下:%。神7T cppttinclude <stdlo.h>LpppdnF char EleriType;typcdcF struct node (EhmType da3;數(shù)弼元素struct node »ichi
9、id;指向左式子struct node "child;指向右孩辛> BTNode;extern uoid CreateU1Hode(BI Node *&b.char *str);extern BTNodn «FindHode(BTHudp «b,ElemType x);extern BTNode -H.chlldNude(BTNude 叩);extern Bl Node «HchildNode(UIHode 叩);pxtprn int RTNodpDppth(RTNo(|p Mi);extern uoid DispBTNodc(BiNode
10、 »o);extern int BIWi(1th(BTHortP »t);extern xnt Nodes(BTNode *b);extern int LeafNodes(BlNode »b);uoid nain() (Bl Mode *b.*p.*lp.*rp;CrNtPBTI1odF(by (B(D9E(H(J9K(L9H(9N),C(F>6(>I)r);prlntF(-n-);printfL(l)檢出二X樹:“):0i5pBntod"t>);prim:r("rr);printf(2)H,結(jié)點p=FindNode(bv&g
11、t;H<); if (p!-HULL) <ip-LcniidHodc(p);if (IpHULL)prints。主孩子為恥,lp->gta);elseprints,無左孩子-);print”“無工孩子-);rpMtchildHnde(p);IF (rpt-NULL)printf 右孩子為紅“vrp->ddta); elseprints,無右孩子):prlntfCXn-);p”ntf (,(?)二叉樹 b 的深度 rtdW.BINodeDeptMb);printf (,(“)二叉樹峭再度二<in,.BTWi<HMtO);P“ntf("(5)二叉樹 b
12、 的結(jié)我個數(shù):3W.lto(tes(l>);prinsrc6)二更樹b的葉子結(jié)點個熱透dn“.Lea,Node。b)>:print"”(7)擇放一叉樹 brT);printF(-n-);17程序執(zhí)行結(jié)果如下:實驗程序設計如下:勺cp>iF (p >rchild?-HULL)石孩子人口<top*;Sttop-p >rchild;> _IF (p->lchiidf-NULL)核子入性( top*; Sttopj-p->lchlld:printFC'W);uoid InUrderC BI Mode *b)中序遍歷的遞歸其注( i
13、f (b!-NULL) <Inflrdpr(b->lchild);:葦歸訪回左二忖printFCU ,“; 一同報結(jié)百 Jnflrdpr(b->rchild);遞歸;方問右二付? > uoid ln0rder1(DTHode *b) < BFNodc «StNoxSizcJe»p: int tap=-1; if (bt=MULL)uhilp (pfNULL)print,r后序遍后隹貝:VT);printF(- 場歸麟二“)" 0Qtgrd“(b;printFCiO;printer 非通歸算在:“);po o"on(t);pr
14、inuMr);程序執(zhí)行結(jié)果如下:'Program FilesMicrosoft Vi suiil Studi oMyProj ®c tsPr oj T-2Bebuj:Froj7_2. ez eSX7Rl>:A<B<DrECHCJrKCL/.ri(rN)>>>)zCCFrGCr I >>>層次遍歷序列:A BCDEFGHIJKLMNTTTml列罷-Rm mB D EB D E尸 -nr 中列售BBDHIIrinNBB后序遍歷任列: 遞歸算法:D J非遞歸算法:D Jany key to continue實驗程序設計如下:&a
15、mp; cwfT-3.cp>Ninclude <5tdio.h> liincliirip <malloc .h> MdeFine Maxsize 100 tppedeF char ElenType; tpppdeF struct nodn ( Elewliipr data; struct niidn wlchild; struct node «rchild; > BIHode;效兆元素extern uoid CreateBTHude(BTNode 4b,char «str) ; Elqo7T .cpp文仔中 extern uoid Dis
16、pBrNode(BI Node »D); uoid AllPath(BTHod?( struct snodeBTNode *nod« int porent;> QuNaxSize;int front9rear9p;front-rear-1;reartt;Qufredr.nude=b;UureorJ.parent-1: utiilp (front <rt-ar) <front*; b=QuFrant.node; IF (b->lchlld=NULL腰腹霸昌敏列中的位置 力翻翻稿指針 善又列為主隊列性結(jié)式超W入隊列柢結(jié)點段有雙親結(jié)點/和洌不為空/秋頭出隊
17、列t&& b->rchlld=MULL) 心 為葉子結(jié)點printfC- 觀到很點路衽二'b-WdtcO;p-Front;while (Qnp.parentf- 1)勺cp>while* (Qup .parent?-1) <prlntf (eetc aQup .node->data); p-Qup.parent;>printf ('%cnQulpj .node->data): >If (b->lchlldt-NULL)/在孩子入隊列"W ;qurear.node-b->lchiid;Qurpar.p
18、arpnt-front;>if <D->rchll<l?-NULL)/渚該子入隊列< redr*;Qurear.norte-h >rchild;(urH4r .|Mrt»nt-Front;uold fillPathKBlNode *b.Elenlype path”.int pathlen) (int 1;if (b!-HULL) <if(D->lchiidNULL 時 D->rchiid-mull) 2為葉子結(jié)點 <printf(- 9到根結(jié)點路徑:乳“,b->data,b->(Jata);for (i-path
19、len-l;i>-o:l)printf(-%c -,pathi);prlntfC,ne-);else<中 e 商 入胃 成1孑子 A學a.u 嗎天唱描樂 一型八月1*3訐 當,iKJJ復 展,凈速區(qū) / / / / / / / / / /pathpathlen-b->data: pathlen*;niiPatm(t)->ichlid9patr)vp3thien); nilPathl(b >rchild9pathrpdthlen);|Mthlrn-;uoidLonqPath(BVNode >bvElenlvpe patn,int pathlen9Eleniyp
20、e lonqpatr),int &lonqpathlen)int a; It (b-NULL)<if (pUilen>longpdtlilen)若當前路徑更長,將路徑保存左1皿”6中<for (i-pathlen-1;i>-6;i-) lonqpdthl=pthi;longpathlen-pathlen;else ( ptnrpthlQnl=t>->diti;將嗚前結(jié)點放入瞄徑中pathlen>*;脖徑長度增1I nngPath(b->lchil(i 9path ,pathlpn Jongpath Jongpdthlpn); 尸歸掃殉左壬
21、 LonqPdth(b>>rchlld vpathvpdthlen, lonqpdthloiiqpdthlen); 族白啟書右十 pathlen-;“反復環(huán)境Displ (IIIHode *b> uoid DispleaFCBIHode *b)(if (bfNULL) if (b->lchild-Hill I Rft b >rchild-HUI I ) printf(,eVelse <DlspLe<jF(lj>>lchlld); DispLedF(t)>rchild);uoid naln()BTNode «b;ElenTyp
22、e pathNaxSize9lungpathllaxSlze;int i.longpathlr'n-B;CrP4tPBTNodP(b/-A(B(D,F(H(J,K(LrH(,H)>C(F>fi(>T)-); printFC n Z.XWo;PispBlNode(D);prlntf(wnn-*); printfC 后叁點:“);D吐plef(b);printfriA-»prlntFC AllPdthrXnJjAllPatlHbJjprlntf(printf C- AllPatm :n' ) :fillPathl(b.patn.0) :prlntf (
23、An*);LongPathCb,path , GJongpath, longpathlen);printf r .一.量長路金長度孫n” 9longpaUilen);printfr第一條奈卜路在::);for < i-1 nng|Mtlilrn一)printFC,c >a,lonqpdtnij);printfCAnXn");程序執(zhí)行結(jié)果如下:A B A E B AA B EHh的葉子結(jié)點;D J L N F I二叉樹 b:A<BDEOKJK<L.IK.N)>3CFGai>>>:Progr mi FilesVli crosof t Visual Studi oMyProj ectsVPr oj7_3l>ebutFroj7_3. exe-J國XAACEHKD F I J L N 路解路路造路 點點點點點點 土口士口士口士口士口士口 2 J_2 " 2 一 幺 J 一 t 產(chǎn)1+T KT,:, flfj AI_ n . n I 11 in in -v p至至至
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設計員工培訓內(nèi)容
- 雅安市郵政管理局招聘真題2024
- 腹腔鏡膽囊手術術后護理
- 南寧市青秀區(qū)委宣傳部招聘真題2024
- 造影術后護理查房
- 鋁合金門窗廠車間6S培訓
- 季度教學回顧與策略
- 預防感冒中班健康
- 項目管理知識培訓
- 2025至2030年中國運動護腕表市場調(diào)查研究報告
- 城鄉(xiāng)的規(guī)劃法解讀
- 2024年全國鄉(xiāng)村醫(yī)生資格考試專業(yè)基礎知識復習題庫及答案(共150題)
- 蘇教版六年級下冊數(shù)學第三單元第1課《解決問題的策略(1)》課件(公開課)
- EOS-60D-說明手冊課件
- 企業(yè)經(jīng)營管理診斷方案
- 壓瘡上報登記表
- 2021年無人機駕駛員考試題庫及答案(完整版)
- 城軌車輛常見制動系統(tǒng)-EP09制動系統(tǒng)
- 同位素水文學研究綜述
- 【公開課】第1章發(fā)酵工程單元復習教學設計高二下學期生物人教版選擇性必修3
- 植筋施工施工方案
評論
0/150
提交評論