版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、4.4 樹和森林,樹的遍歷,定義4.1 一個(gè)樹(或樹形)就是一個(gè)有限非空的結(jié)點(diǎn)的集合T,其中: 1)有一個(gè)特別標(biāo)出的被稱為該樹(或樹形)的根root(T)的結(jié)點(diǎn)。 2)其他結(jié)點(diǎn)被分成m0個(gè)不相交的集合 1 , 2 , 稱作root(T)的子樹(或子樹形)。,樹的先根遍歷 樹的后根遍歷,樹的先根遍歷遞歸定義如下: (1)訪問根結(jié)點(diǎn); (2)從左到右依次先根遍歷根結(jié)點(diǎn)的諸子樹(如果諸子樹存在)。 樹的后根遍歷遞歸定義如下: (1)后根遍歷根結(jié)點(diǎn)的諸子樹(如果諸子樹存在) (2)訪問根結(jié)點(diǎn)。,樹的順序存儲(chǔ),如何對(duì)樹進(jìn)行順序存儲(chǔ)? 1962年,戈尼(S.Gorn)介紹了通過次數(shù)在先根次序下表示的樹。
2、定理4.2 如果已知一棵樹的先根序列和每個(gè)結(jié)點(diǎn)的度,則能唯一確定該樹的結(jié)構(gòu)。,A,B,C,G,H,D,F,I,L,K,J,E,A B C D E F G H I J K L 4 0 3 0 0 0 0 2 2 0 0 0,層次次序,father數(shù)組,樹的鏈接存儲(chǔ),Father鏈接 孩子鏈表 左兒子-右兄弟鏈接結(jié)構(gòu),左兒子-右兄弟鏈接存儲(chǔ)結(jié)構(gòu),FirstChild Data NextBrother,A,B,C,D,E,F,A , B,C, E, F , D ,操 作,搜索父結(jié)點(diǎn) 搜索指定數(shù)據(jù)域的結(jié)點(diǎn) 搜索大孩子結(jié)點(diǎn)和大兄弟結(jié)點(diǎn) 刪除子樹 樹和森林的遍歷,搜索父結(jié)點(diǎn),算法FindFather(t,
3、p.result) /*在以t為根指針的樹中,搜索指針p所指結(jié)點(diǎn)的父結(jié)點(diǎn)。若找到,則令指針result指向其父節(jié)點(diǎn);否則,令指針result為空。 */,算法FindFather(t,p.result) qFirstChild(t). while qnull and q p do ( FindFather(q,p.result) if result=null then q NextBrother(q). else return result. ) if q=p then return result t. else return result null. ,搜索指定數(shù)據(jù)域的結(jié)點(diǎn),算法FindTa
4、rget(t,target.result) /*在以t為根指針的樹中,搜索數(shù)據(jù)成員等于target的結(jié)點(diǎn)。若找到,則令指針result指向該結(jié)點(diǎn);否則,令指針result為空。*/,算法FindTarget(t,target.result) if data(t)=target then return resultt. p FirstChild(t). FindTarget(p,target.result). while p null and result=null do ( p NextBrother(p). FindTarget(p,target.result). ) return resu
5、lt null. ,FindTarget(p,target.result)=null,result,算法FindTarget(t,target.result) if data(t)=target then return resultt. p FirstChild(t). while p null and FindTarget(p,target.result)=null do ( p NextBrother(p). ) if resultnull then return result. else return result null. ,搜索大孩子結(jié)點(diǎn)和大兄弟結(jié)點(diǎn),算法GFC(p.q)/GetF
6、irstChild If p null and FirstChild(p) null then return q FirstChild(p). return q null. 算法GNB(p.q)/GetNextBrother If p null and NextBrother(p) null then return q NextBrother (p). return q null. ,刪除子樹,算法DS(t,p) /*算法DS在以t為根的樹中刪除根為p的子樹;*/,算法DS(t,p) If t=null or p=null then return. FindFather(t,p. result
7、). if result=null then (Del(p). root null. return.) if FirstChild(result)=p then ( FirstChild(result) NextBrother(p). Del(p). Return.) q FirstChild(result). while NextBrother(q) p do qNextBrother(q). NextBrother(q) NextBrother(p). Del(p). Return. ,算法Del(p) If p=null then return. q FirstChild(p). whi
8、le qnull do ( next NextBrother(q). Del(q). q next. ) AVAIL=p. ,森林與二叉樹的自然對(duì)應(yīng),任何一個(gè)森林都對(duì)應(yīng)一棵二叉樹,任何一棵二叉樹對(duì)應(yīng)一個(gè)唯一的森林。稱這種對(duì)應(yīng)為森林與二叉樹之間的自然對(duì)應(yīng)。,定義4.7 設(shè)F=( 1 , 2 , )表示由樹 1 , 2 , 組成的森林,自然對(duì)應(yīng)下森林F的二叉樹B(F)遞歸定義如下: (1)若n=0,則B(F)為空; (2)若n0,則B(F)的根是Root ( 1 ), B(F)的右子樹是B( 2 , 3 , ),左子樹是B( 11 , 12 , 1 ),其中, 11 , 12 , 1 是Root
9、( 1 )的諸子樹。,定義4.8 設(shè)二叉樹T的根是Root (T),T的左子樹是L,T的右子樹是R,則二叉樹T自然對(duì)應(yīng)下的森林F(T)遞歸定義如下: (1)若Root (T)為空,則F(T)為空的森林; (2)若Root (T)非空,則F(T)由第一棵樹 1 和森林F(R)組成。其中, 1 是以Root (T)為根的樹, 1 的諸子樹由森林F(L)組成。,樹、森林與二叉樹的轉(zhuǎn)換,森林的遍歷,森林的先根遍歷,森林的先根遍歷遞歸定義如下: (1)訪問第一棵樹的根結(jié)點(diǎn); (2)先根遍歷第一棵樹根結(jié)點(diǎn)的諸子樹(如果諸子樹存在) (3)先根遍歷其余的諸樹(如果其余的諸樹存在) 森林的先根遍歷序列正好是它
10、自然對(duì)應(yīng)下的二叉樹的先根序列。,森林后根遍歷,森林的后根遍歷遞歸定義如下: (1)后根遍歷第一棵樹根結(jié)點(diǎn)的諸子樹(如果諸子樹存在); (2)訪問這棵樹的根結(jié)點(diǎn); (3)后根遍歷其余的諸樹(如果其余的諸樹存在)。 森林的后根遍歷序列正好是它自然對(duì)應(yīng)下的二叉樹的中根序列。,樹先根遍歷的遞歸算法,算法PreOrder(t) If t=null then return. print(data(t). GetFirstChild(t.child). while childnull do ( PreOrder(child). GNB(child.child). ) ,先根遍歷的迭代算法,算法NPO(t) S=AVAIL. pt. NPO3. while pnull do ( print(data(p). push(S,p). pFirstChild(p). ) while p=null and S非空 do ( pop(S.p). p NextBrother(p). ) if S非空 then goto NPO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年大田縣公安局招聘21名警務(wù)輔助人員備考題庫(kù)及完整答案詳解1套
- 2025年阿勒泰地區(qū)吉木乃縣應(yīng)急管理局面向社會(huì)公開招聘政府專職消防員6人備考題庫(kù)及參考答案詳解一套
- 2025年招商銀行紹興分行社會(huì)招聘?jìng)淇碱}庫(kù)及答案詳解一套
- 2025年西藏自治區(qū)人民政府辦公廳急需緊缺人才引進(jìn)6人備考題庫(kù)及一套完整答案詳解
- 2025年洛陽(yáng)市公安機(jī)關(guān)公開招聘警務(wù)輔助人員501人備考題庫(kù)及一套答案詳解
- 新疆維吾爾自治區(qū)2026屆高三上學(xué)期普通高考適應(yīng)性檢測(cè)分學(xué)科第一次模擬考試政治試卷(含答案)
- 2026 年中職歷史(中國(guó)近現(xiàn)代史常識(shí))試題及答案
- 2026年及未來5年市場(chǎng)數(shù)據(jù)中國(guó)汽車拋光行業(yè)市場(chǎng)調(diào)研及投資戰(zhàn)略規(guī)劃報(bào)告
- 2025年大學(xué)第二學(xué)年(歷史學(xué))中國(guó)近代史鴉片戰(zhàn)爭(zhēng)時(shí)期試題及答案
- 2026年及未來5年市場(chǎng)數(shù)據(jù)中國(guó)明膠行業(yè)市場(chǎng)運(yùn)營(yíng)現(xiàn)狀及投資規(guī)劃研究建議報(bào)告
- GA 2113-2023警服女禮服
- 國(guó)開機(jī)考答案-鋼結(jié)構(gòu)(本)(閉卷)
- 紀(jì)委談話筆錄模板經(jīng)典
- 消防安全制度和操作規(guī)程
- 叉車安全技術(shù)交底
- 國(guó)家預(yù)算實(shí)驗(yàn)報(bào)告
- 工業(yè)園區(qū)綜合能源智能管理平臺(tái)建設(shè)方案合集
- 附件1:中國(guó)聯(lián)通動(dòng)環(huán)監(jiān)控系統(tǒng)B接口技術(shù)規(guī)范(V3.0)
- 正弦函數(shù)、余弦函數(shù)的圖象 說課課件
- 閉合性顱腦損傷病人護(hù)理查房
- 《你看起來好像很好吃》繪本課件
評(píng)論
0/150
提交評(píng)論