


版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第十二講樹(shù)和二叉樹(shù)1. 掌握樹(shù)、二叉樹(shù)的基本概念和術(shù)語(yǔ),2 .掌握二叉樹(shù)的性質(zhì)。3. 理解二叉樹(shù)的存儲(chǔ)結(jié)構(gòu)4. 熟悉建立二叉樹(shù)的二叉鏈表的算法。? 教學(xué)重點(diǎn):二叉樹(shù)的定義、二叉樹(shù)的性質(zhì)? 教學(xué)難點(diǎn):二叉樹(shù)的性質(zhì)? 授課內(nèi)容4.1 樹(shù)的定義和基本術(shù)語(yǔ)前面討論線性結(jié)構(gòu)的表示及其應(yīng)用實(shí)例。然而,線性結(jié)構(gòu)在許多實(shí)際應(yīng)用中不能明確、方便地表示數(shù)據(jù)元素之間的復(fù)雜關(guān)系。樹(shù)型結(jié)構(gòu)是一種應(yīng)用十分廣泛的非線性結(jié)構(gòu),其中以二叉樹(shù)最為常用,它是以分支定義的層次結(jié)構(gòu)。樹(shù)型結(jié)構(gòu)在客觀世界中廣泛存在,如家族的家譜、各種社會(huì)組織機(jī)構(gòu),一般都可以用樹(shù)來(lái)形象地表示。在計(jì)算機(jī)領(lǐng)域中,編譯系統(tǒng)中源 程序的語(yǔ)法結(jié)構(gòu)、數(shù)據(jù)庫(kù)系統(tǒng)中信息的
2、組織形式也用到樹(shù)形結(jié)構(gòu)。本章重點(diǎn)討論二叉樹(shù)的存儲(chǔ)結(jié)構(gòu)、各種操作及其應(yīng)用實(shí)例。4.1.1 樹(shù)的定義1.定義樹(shù)(tree )是由n ( n>0)個(gè)結(jié)點(diǎn)組成的有限集合T且滿足以下條件。1) 有且僅有一個(gè)特定的結(jié)點(diǎn)被稱為該樹(shù)的根( Root )。2) 除根結(jié)點(diǎn)之外的其余結(jié)點(diǎn)可分為m(m >0)個(gè)互不相交的集合 T1, T2,. ,Tm且其中每個(gè)集合又是一棵樹(shù),并稱之為根的子樹(shù)(Subtree )。這是一個(gè)遞歸的定義,即在定義中又用到了樹(shù)的概念,這也反映了樹(shù)的固有特性。圖4-1-1是兩棵樹(shù)的示例。(a)是只有一個(gè)根結(jié)點(diǎn) A的樹(shù)。(b)是一棵由11個(gè)結(jié)點(diǎn)組 成的樹(shù)T,其中A是根結(jié)點(diǎn),其余結(jié)點(diǎn)分
3、為三個(gè)互不相交的子集:T仁B,E,F(xiàn),G K,T2=C,H,T3= D,I,J。T1, T2, T3也都是樹(shù),且是根 A的子樹(shù),這三棵子樹(shù)的根結(jié)點(diǎn) 分別為B、C D,每棵子樹(shù)還可以繼續(xù)劃分。A(a)【例4.1】樹(shù)結(jié)構(gòu)和非樹(shù)結(jié)構(gòu)的舉例GCBO (DIII'EF -G(b) 個(gè)非樹(shù)結(jié)構(gòu)(c)一個(gè)非樹(shù)結(jié)構(gòu)(d) 一個(gè)非樹(shù)結(jié)構(gòu)圖4-1-1( b)所示的樹(shù),還可以用圖4-1-2所示的方法表示。(a)集合包含關(guān)系文氏圖法法法ABG KC H DJ '(A(B(E,F,G(K),C(H),D(I,J)(c)凹入法(b)廣義表法樹(shù)的基本術(shù)語(yǔ)樹(shù)的結(jié)點(diǎn)樹(shù)的結(jié)點(diǎn)包含一個(gè)數(shù)據(jù)元素及若干個(gè)指向其子樹(shù)的分
4、支。結(jié)點(diǎn)的度和樹(shù)的度結(jié)點(diǎn)的度是結(jié)點(diǎn)的子樹(shù)的個(gè)數(shù)。樹(shù)的度是樹(shù)中結(jié)點(diǎn)度的最大值。例如圖4 1 1 (b)中,結(jié)點(diǎn)A和B的度為3,結(jié)點(diǎn)D的度為2;而樹(shù)T的度為3。葉子和分支結(jié)點(diǎn)度為零的結(jié)點(diǎn)稱為葉子或終端結(jié)點(diǎn)。度不為零的結(jié)點(diǎn)稱為分支結(jié)點(diǎn)或非終端結(jié)點(diǎn)。圖 4 1 1 (b)中,結(jié)點(diǎn)E、F、H K、I、J是葉子結(jié)點(diǎn),結(jié)點(diǎn) B、C D G 是分支結(jié)點(diǎn)。孩子、雙親及兄弟結(jié)點(diǎn)某結(jié)點(diǎn)的各子樹(shù)的根稱為該結(jié)點(diǎn)的孩子,而該結(jié)點(diǎn)稱為孩子的雙親。具有相同雙親的結(jié)點(diǎn)互稱為兄弟。圖4 1 1 (b)中,A是結(jié)點(diǎn)B C、D的雙親,B C、D均是結(jié)點(diǎn)A的孩子,B C D互為兄弟。此外,一棵樹(shù)上除根結(jié)點(diǎn)以外的其他結(jié)點(diǎn) 稱為根的子孫,
5、而根結(jié)點(diǎn)是其子孫的祖先。結(jié)點(diǎn)的層次和樹(shù)的深度結(jié)點(diǎn)的層次值從根算起,根的層次值為1,其余結(jié)點(diǎn)的層次值為雙親結(jié)點(diǎn)層次值加 1;樹(shù)中結(jié)點(diǎn)的最大層次值稱為樹(shù)的深度或高度。圖4 1 1 (b)中,結(jié)點(diǎn)A、B E、K的層次值分別為1、2、3、4。樹(shù)T的深度為4。此外,雙親在同一層的結(jié) 點(diǎn)互稱為堂兄弟,如 G和H互為堂兄弟。4.2 二叉樹(shù)4.2.1 二叉樹(shù)的定義二叉樹(shù)是N (NA 0)個(gè)結(jié)點(diǎn)的有限集合。它或?yàn)榭諛?shù)(Nh 0),或由一個(gè)根結(jié)點(diǎn)和兩個(gè)分別稱為左子樹(shù)和右子樹(shù)的互不相交的子樹(shù)構(gòu)成。這個(gè)定義是遞歸的。圖4-2-1中展現(xiàn)五種基本形態(tài)不同的二叉樹(shù)。 應(yīng)特別注意,二叉樹(shù)種左子樹(shù)和右子樹(shù)是嚴(yán)格區(qū)分的,圖4-2
6、-1 ( c)與(d)是兩棵不同的二叉樹(shù)。(d)左子樹(shù)為(e)左右子樹(shù)均非空的二叉樹(shù)空的二叉樹(shù)空二叉樹(shù)(b)僅有(c )右子樹(shù)為根結(jié)點(diǎn)空的二叉樹(shù)圖4-2-1二叉樹(shù)的五種基本形二叉樹(shù)的重要性質(zhì)性質(zhì)1 二叉樹(shù)i (i > 1)層上至多有2i 1個(gè)結(jié)點(diǎn)。有圖4 2 2 (a)可知,根結(jié) 點(diǎn)在第1層上,這層結(jié)點(diǎn)數(shù)最多為1個(gè),即20個(gè);顯然第2層上最多有2個(gè)結(jié)點(diǎn),即21第四章樹(shù)亂據(jù)結(jié)拘個(gè);假設(shè)第i 1層結(jié)點(diǎn)最多有2i 2個(gè),且每個(gè)結(jié)點(diǎn)最多有兩個(gè)孩子,那么第 i層 上結(jié)點(diǎn)最多有 2 x 2i 2 = 2i 1個(gè)。性質(zhì)2 深度為k ( k> 1 )的二叉樹(shù)至多有 2 k 1個(gè)結(jié)點(diǎn)。根據(jù)性質(zhì)1,顯
7、然深度為k的二叉樹(shù)的結(jié)點(diǎn)總數(shù)至多為:k(位于第i層上的結(jié)點(diǎn)的最多數(shù))2i 12k 1性質(zhì)3在任意二叉樹(shù)中,若葉子結(jié)點(diǎn)(即度為零的結(jié)點(diǎn))個(gè)數(shù)為n0,度為1的結(jié)點(diǎn)數(shù)為n 1,度為2的結(jié)點(diǎn)個(gè)數(shù)為n2,那么有:n0= n2 + 1。設(shè)n代表二叉樹(shù)結(jié)點(diǎn)總數(shù),那么n= n0+ n1 + n2()由于有n個(gè)結(jié)點(diǎn)的二叉樹(shù)總分支數(shù)為n- 1條,于是得n 1 = 0 x n0+ 1 x n1 + 2 x n2 ()將式()代入式(),得n0= n2 + 1在研究后面的性質(zhì)之前,先介紹兩種特殊形態(tài)的二叉樹(shù):滿二叉樹(shù)和完全二叉樹(shù)。一棵深度為k并且含有2k 1個(gè)結(jié)點(diǎn)的二叉樹(shù)稱為滿二叉樹(shù),這種數(shù)的特點(diǎn)是每層上的結(jié)點(diǎn)數(shù)都是
8、最大結(jié)點(diǎn)數(shù),如圖4 2 2 (a)所示。對(duì)滿二叉樹(shù)的結(jié)點(diǎn)可以從根結(jié)點(diǎn)開(kāi)始自上向下,自左向右順序編號(hào),圖4 2 2 ( a)中每個(gè)結(jié)點(diǎn)斜上角的數(shù)字即是該結(jié)點(diǎn)的編號(hào)。深度為k,含有n個(gè)結(jié)點(diǎn)的二叉樹(shù),當(dāng)且僅當(dāng)其每個(gè)結(jié)點(diǎn)的編號(hào)與相應(yīng)滿二叉樹(shù)結(jié)點(diǎn)順序編 號(hào)從1到n相對(duì)應(yīng)時(shí),則稱此二叉樹(shù)為完全二叉樹(shù),如圖4 2 2 (b)所示。而圖4 2 2(c)則不是完全二叉樹(shù)。(a)滿二叉樹(shù)(b)完全二叉樹(shù)(c)非完全二叉樹(shù)圖4 2 2滿二叉樹(shù)和完全二叉樹(shù)性質(zhì)4 具有n個(gè)結(jié)點(diǎn)的完全二叉樹(shù), 其深度為+ 1(其中表示不大于 x的最大整數(shù)) 性質(zhì)5 若對(duì)有n個(gè)結(jié)點(diǎn)的完全二叉樹(shù)進(jìn)行順序編號(hào)( K i <n),那么,對(duì)
9、于編號(hào)為 i (i > 1)的結(jié)點(diǎn),有:當(dāng)i = 1時(shí),該結(jié)點(diǎn)為根,它無(wú)雙親結(jié)點(diǎn);當(dāng)i > 1時(shí),該結(jié)點(diǎn)的雙親結(jié)點(diǎn)編號(hào)為;若2i v n,則有編號(hào)為2i的左孩子,否則沒(méi)有左孩子;霰禍結(jié)狗第四章樹(shù)若2i + 1 v n,則有編號(hào)為2i + 1的右孩子,否則沒(méi)有右孩子; 對(duì)照?qǐng)D4 2 2 (a)或圖4 2 2 ( b),讀者可看到右性質(zhì) 5所描述的結(jié)點(diǎn)與編號(hào)的對(duì) 應(yīng)關(guān)系。423二叉樹(shù)的存儲(chǔ)結(jié)構(gòu)二叉樹(shù)可以采用順序存儲(chǔ)結(jié)構(gòu)或鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。1順序存儲(chǔ)結(jié)構(gòu)用一組連續(xù)的存儲(chǔ)單元存放二叉樹(shù)中的元素,這對(duì)于滿二叉樹(shù)和完全二叉樹(shù)是非常合適的。假設(shè)將圖4-2-2 (a)所示的滿二叉樹(shù)存放在一維數(shù)組bt中
10、,可以發(fā)現(xiàn)結(jié)點(diǎn)的編號(hào)恰好與數(shù)組元素的下表相對(duì)應(yīng)(見(jiàn)圖 4-2-3 )。根據(jù)二叉樹(shù)性質(zhì)5,結(jié)點(diǎn)在一維數(shù)組中的相對(duì)位置隱含著結(jié)點(diǎn)之間的關(guān)系。因此在數(shù)組bt中可以方便地由某結(jié)點(diǎn)bti的下標(biāo)i找到它們的雙親結(jié)點(diǎn)bti/2,或左、右孩子結(jié)點(diǎn)2i 、bt2i+1.2. 鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)在二叉樹(shù)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)中最常用的是二叉鏈表和三叉鏈表。二叉鏈表的每個(gè)結(jié)點(diǎn)有一個(gè)數(shù)據(jù)域和兩個(gè)指針域,一個(gè)指針指向左孩子,另一個(gè)指向右孩子。結(jié)點(diǎn)結(jié)構(gòu)描述為:typedef struct btno deELEMTP data;struct btnode *lchild,*rchlid;BTNode;例如圖4-2-4 (a)中的二叉樹(shù) T
11、,它的二叉鏈表如圖 4-2-4 (b)所示,其中bt是一 個(gè)*BTNode類(lèi)型的變量,并且指向根結(jié)點(diǎn),通常對(duì)于二叉鏈表的操作都是從它開(kāi)始的。在實(shí)際操作中,如經(jīng)常需要尋找結(jié)點(diǎn)的雙親,便可以采用三叉鏈表的形式。三叉鏈表的結(jié)點(diǎn)比二叉鏈表結(jié)點(diǎn)多一個(gè)指向雙親的指針域。其結(jié)點(diǎn)結(jié)構(gòu)描述為:typedef struct btnode _ p ELEMTP data;struct btnode * pare nt, *lchild, *rchild; BTNode_p;三叉鏈表如圖4-2-4 ( c)所示。(a)二叉樹(shù)T(b)二叉鏈表(c)三叉鏈表圖4-2-4二叉樹(shù)的鏈表存儲(chǔ)結(jié)構(gòu)424 二叉樹(shù)的存儲(chǔ)結(jié)構(gòu)建立二叉
12、鏈表的方法不止一種。這里介紹的方法的原理是利用二叉樹(shù)的性質(zhì)5。對(duì)于棵任意的二叉樹(shù),先按滿二叉樹(shù)對(duì)其結(jié)點(diǎn)進(jìn)行編號(hào),如圖4-2-5(a)所示。雖然此二叉樹(shù)并i1235714chABCEDF非滿二叉樹(shù),結(jié)點(diǎn)的編號(hào)并不連續(xù),但結(jié)點(diǎn)編號(hào)之間的關(guān)系是滿足二叉樹(shù)的性質(zhì)5的。(b)圖4 2 5二叉樹(shù)及數(shù)據(jù)表算法實(shí)現(xiàn)時(shí),需設(shè)置一個(gè)輔助向量p,用于存放指向結(jié)點(diǎn)的指針,如pi中存放編號(hào)為i的結(jié)點(diǎn)的指針(該結(jié)點(diǎn)的地址)。圖4-2-5 (a)的原是數(shù)據(jù)序列如圖4-2-5 ( b)所示,按此表一一輸入數(shù)對(duì)(結(jié)點(diǎn)編號(hào)i和數(shù)據(jù)ch)。每輸入一對(duì)數(shù)(i , ch),便產(chǎn)生一個(gè)新的結(jié)點(diǎn)s,同時(shí)將該結(jié)點(diǎn)的指針保存在pi中。當(dāng)i = 1時(shí),所產(chǎn)生的結(jié)點(diǎn)為根結(jié)點(diǎn)。當(dāng)i>1時(shí),由性質(zhì)5可知:其雙親結(jié)點(diǎn)的編號(hào)j = i/2。如果i為偶數(shù),則它是雙親的左孩子,就讓pj->lchild = s;如果i為奇數(shù),則它是雙親的右孩子,就讓pj->rchild = s。這樣就將每個(gè)結(jié)點(diǎn)與其雙親結(jié)點(diǎn)相連,從而建立起了二叉鏈表。算法見(jiàn)算法4.1。算法4.1#defi ne MAXNUM 20】uno宀 蘭。03二03- P% P% : =ueos X = - II。二9U S: 汪 u_d宀 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 多媒體技術(shù)基礎(chǔ)試卷及答案
- 2024年食品質(zhì)檢員考試實(shí)操內(nèi)容總結(jié)與答案
- 2024年汽車(chē)美容師考試新規(guī)試題及答案
- 暑假雕塑裝置課件
- 汽車(chē)美容師商業(yè)意識(shí)培養(yǎng)試題及答案
- 濰坊招公務(wù)員試題及答案
- 2025年小學(xué)一年級(jí)作文技巧試題及答案
- 2024年二手車(chē)評(píng)估師核心復(fù)習(xí)資料試題及答案
- 2022南鐵日語(yǔ)試題試卷及答案
- 2024年汽車(chē)美容師職場(chǎng)適應(yīng)游戲研究試題及答案
- 田徑運(yùn)動(dòng)會(huì)各種記錄表格
- 《人生就像自行車(chē)》課件
- 吉利汽車(chē)人才測(cè)評(píng)試題在線測(cè)試
- 2024年企業(yè)招聘考試-農(nóng)科院招聘筆試歷年真題薈萃含答案
- 【工商管理專業(yè)畢業(yè)綜合訓(xùn)練報(bào)告2600字(論文)】
- 2022湖南省郴州市中考物理真題試卷和答案
- 《固體礦產(chǎn)勘查鉆孔質(zhì)量要求》(報(bào)批稿)
- 八音的分類(lèi)教學(xué)課件
- 挖掘機(jī)的基礎(chǔ)知識(shí)-挖掘機(jī)的結(jié)構(gòu)及特點(diǎn)
- 長(zhǎng)江防汛抗旱方案
- 茶葉加工工理論試卷及答案
評(píng)論
0/150
提交評(píng)論