數(shù)據(jù)結(jié)構(gòu)二叉樹實(shí)驗(yàn)報(bào)告_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)二叉樹實(shí)驗(yàn)報(bào)告_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)二叉樹實(shí)驗(yàn)報(bào)告_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)二叉樹實(shí)驗(yàn)報(bào)告_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)二叉樹實(shí)驗(yàn)報(bào)告_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余12頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、一、實(shí)驗(yàn)?zāi)康暮鸵螅?)掌握樹的相關(guān)概念,包括樹、節(jié)點(diǎn)的度、樹的度、分支節(jié)點(diǎn)、葉子節(jié)點(diǎn)、孩子節(jié)點(diǎn)、雙親節(jié) 點(diǎn)、樹的深度、森林等定義。(2)掌握樹的表示,包括樹形表示法、文氏圖表示法、凹入表示法和括號(hào)表示法等。(3)掌握二叉樹的概念,包括二叉樹、滿二叉樹和完全二叉樹的定義。(4)掌握二叉樹的性質(zhì)。(5)重點(diǎn)掌握二叉樹的存儲(chǔ)結(jié)構(gòu),包括二叉樹順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。(6)重點(diǎn)掌握二叉樹的基本運(yùn)算和各種遍歷算法的實(shí)現(xiàn)。(7)掌握線索二叉樹的概念和相關(guān)算法的實(shí)現(xiàn)。(8)掌握哈夫曼樹的定義、哈夫曼樹的構(gòu)造過(guò)程和哈夫曼編碼的產(chǎn)生方法。(9)掌握并查集的相關(guān)概念和算法。(10)靈活運(yùn)用二叉樹這種數(shù)據(jù)結(jié)構(gòu)解

2、決一些綜合應(yīng)用問(wèn)題。二、實(shí)驗(yàn)內(nèi)容注:二叉樹b為如圖7-123所示的一棵二叉樹圖7-123小實(shí)瞼 編寫一個(gè)程序,實(shí)現(xiàn)二叉樹的各種運(yùn)算,并在此基礎(chǔ)上設(shè)計(jì)一個(gè)程序完成如下功能:(1)輸出二叉樹b;(2)輸出H節(jié)點(diǎn)的左、右孩子節(jié)點(diǎn)值;(3)輸出二叉樹b的深度;(4)輸出二叉樹b的寬度;(5)輸出二叉樹b的節(jié)點(diǎn)個(gè)數(shù);(6)輸出二叉樹b的葉子節(jié)點(diǎn)個(gè)數(shù)。實(shí)驗(yàn) 設(shè)計(jì)一個(gè)程序,實(shí)現(xiàn)二叉樹的先序遍歷、中序遍歷和后序遍歷和非遞歸算法,以及層次變量 里的算法。并對(duì)圖7723所示的二叉樹b給出求解結(jié)果。實(shí)驗(yàn) 對(duì)如圖7723所示的二叉樹,設(shè)計(jì)一個(gè)程序,完成如下功能:(1)輸出所有的葉子節(jié)點(diǎn);(2)輸出所有從葉子節(jié)點(diǎn)到根節(jié)

3、點(diǎn)的路徑;(3)輸出(2)中的第一條最長(zhǎng)的路徑。三、實(shí)驗(yàn)過(guò)程描述實(shí)現(xiàn)二叉樹的各種的基礎(chǔ)程序如下:-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串倉(cāng)除二又排(BTNodn »S tNaxS izt.p-HULL; int tup=-1,kfj=0; char ch; b-NUl L ;建文的二叉樹初始時(shí)為空ch-strj); uM】p(ch?-n-)乍t冰掃描完葉布環(huán)< sifitcn(ch) < case ,( :t(jp*;Sttop=p;k=1; bredk;為左結(jié)點(diǎn)case ) stop:broak: cas-ite:k-2; break;為右結(jié)點(diǎn)default:p=(BTNo0。 *)mlloc(sizeoF(BTNud«); p->data-ch;p >lchi

5、ld-p->rchild-NULL; if (b=HIJUI )pftj向二叉樹的根結(jié)點(diǎn)b=P; else已建立二叉樹服結(jié)點(diǎn)< 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) 返叵如匕域?yàn)閬V的空點(diǎn)指價(jià) (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é)點(diǎn)右針(return p >lchild; >BTNude <RchildNude(BTNodt *p)返回P潔點(diǎn)的右蒞孑怙點(diǎn)?§針(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®個(gè)一二(bk?n.u:NULL 爾 7>rc - lllu:NULcreturn 1 一nunLe0FHOde5?>lchildrnum2HLem FHC】d,sbrc:hild);return LnuE;EL 2n實(shí)驗(yàn)程序如下:%。神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é)點(diǎn)p=FindNode(bv&g

11、t;H<); if (p!-HULL) <ip-LcniidHodc(p);if (IpHULL)prints。主孩子為恥,lp->gta);elseprints,無(wú)左孩子-);print”“無(wú)工孩子-);rpMtchildHnde(p);IF (rpt-NULL)printf 右孩子為紅“vrp->ddta); elseprints,無(wú)右孩子):prlntfCXn-);p”ntf (,(?)二叉樹 b 的深度 rtdW.BINodeDeptMb);printf (,(“)二叉樹峭再度二<in,.BTWi<HMtO);P“ntf("(5)二叉樹 b

12、 的結(jié)我個(gè)數(shù):3W.lto(tes(l>);prinsrc6)二更樹b的葉子結(jié)點(diǎn)個(gè)熱透dn“.Lea,Node。b)>:print"”(7)擇放一叉樹 brT);printF(-n-);17程序執(zhí)行結(jié)果如下:實(shí)驗(yàn)程序設(shè)計(jì)如下:勺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 ,“; 一同報(bào)結(jié)百 Jnflrdpr(b->rchild);遞歸;方問(wèn)右二付? > uoid ln0rder1(DTHode *b) < BFNodc «StNoxSizcJe»p: int tap=-1; if (bt=MULL)uhilp (pfNULL)print,r后序遍后隹貝:VT);printF(- 場(chǎng)歸麟二“)" 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實(shí)驗(yàn)程序設(shè)計(jì)如下:&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腰腹霸昌敏列中的位置 力翻翻稿指針 善又列為主隊(duì)列性結(jié)式超W入隊(duì)列柢結(jié)點(diǎn)段有雙親結(jié)點(diǎn)/和洌不為空/秋頭出隊(duì)

17、列t&& b->rchlld=MULL) 心 為葉子結(jié)點(diǎn)printfC- 觀到很點(diǎn)路衽二'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)/在孩子入隊(duì)列"W ;qurear.node-b->lchiid;Qurpar.p

18、arpnt-front;>if <D->rchll<l?-NULL)/渚該子入隊(duì)列< redr*;Qurear.norte-h >rchild;(urH4r .|Mrt»nt-Front;uold fillPathKBlNode *b.Elenlype path”.int pathlen) (int 1;if (b!-HULL) <if(D->lchiidNULL 時(shí) D->rchiid-mull) 2為葉子結(jié)點(diǎn) <printf(- 9到根結(jié)點(diǎn)路徑:乳“,b->data,b->(Jata);for (i-path

19、len-l;i>-o:l)printf(-%c -,pathi);prlntfC,ne-);else<中 e 商 入胃 成1孑子 A學(xué)a.u 嗎天唱描樂 一型八月1*3訐 當(dāng),iKJJ復(fù) 展,凈速區(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)若當(dāng)前路徑更長(zhǎng),將路徑保存左1皿”6中<for (i-pathlen-1;i>-6;i-) lonqpdthl=pthi;longpathlen-pathlen;else ( ptnrpthlQnl=t>->diti;將嗚前結(jié)點(diǎn)放入瞄徑中pathlen>*;脖徑長(zhǎng)度增1I nngPath(b->lchil(i 9path ,pathlpn Jongpath Jongpdthlpn); 尸歸掃殉左壬

21、 LonqPdth(b>>rchlld vpathvpdthlen, lonqpdthloiiqpdthlen); 族白啟書右十 pathlen-;“反復(fù)環(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 后叁點(diǎn):“);D吐plef(b);printfriA-»prlntFC AllPdthrXnJjAllPatlHbJjprlntf(printf C- AllPatm :n' ) :fillPathl(b.patn.0) :prlntf (

23、An*);LongPathCb,path , GJongpath, longpathlen);printf r .一.量長(zhǎng)路金長(zhǎng)度孫n” 9longpaUilen);printfr第一條奈卜路在::);for < i-1 nng|Mtlilrn一)printFC,c >a,lonqpdtnij);printfCAnXn");程序執(zhí)行結(jié)果如下:A B A E B AA B EHh的葉子結(jié)點(diǎn);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國(guó)XAACEHKD F I J L N 路解路路造路 點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn) 土口士口士口士口士口士口 2 J_2 " 2 一 幺 J 一 t 產(chǎn)1+T KT,:, flfj AI_ n . n I 11 in in -v p至至至

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論