




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、左兒子右兄弟表示法樹的左兒子右兄弟表示法又稱為二叉樹表示法或二叉鏈表表示法。每個結(jié)點除了data域外,還含有兩個域,分別指向該結(jié)點的最左兒子和右鄰兄弟。這種表示法常用二叉鏈表實現(xiàn),因此又稱為二叉鏈表表示法。但是實際應用中常用游標(靜態(tài)鏈表)來代替鏈表,請參見表的游標實現(xiàn)。若用指針實現(xiàn),其類型定義為:Type TPosition=NodeType; NodeType=record Label:LabelType;
2、; Leftmost_Child,Right_Sibling:TPosition; end; TreeType=TPosition; 若用游標實現(xiàn),其類型定義為:Type TPosition=integer; NodeType=record Label:LabelTyp
3、e; Leftmost_Child,Right_Sibling:TPosition; end; CellspaceType=array 1.MaxNodeCount of NodeType; TreeType=TPosition;var Cellspace:CellspaceType; Tree:TreeType; 此時樹類型TreeType
4、是整數(shù)類型,它指示樹根在cellspace中的游標。例如圖5(a)中樹的左兒子右兄弟表示法的指針和游標實現(xiàn)分別如圖5(b)和(c)所示。(a)(b)(c)圖5 樹的左兒子右兄弟表示法 用樹的左兒子右兄弟表示法可以 直接實現(xiàn)樹的大部分操作,只有在對樹結(jié)點作Parent操作時需遍歷樹。如果要反復執(zhí)行Parent操作,可在結(jié)點記錄中再開辟一個指向父結(jié)點的指針域, 也可以利用最右兒子單元中的Right_Sibling作為指向父結(jié)點的指針(否則這里總是空指針)。當執(zhí)行Parent(v)時,可以先通過 Right_Sibling逐步找出結(jié)點v的最右兄弟,再通過最右兄弟的
5、Right_Sibling(父親指針)找到父結(jié)點。這個結(jié)點就是結(jié)點v的父親。 在這樣的表示法下,求一個結(jié)點的父親所需要的時間正比于該結(jié)點右邊的兄弟個數(shù)。不過,這時每個記錄中需要多用一位(bit)空間,用以標明該記錄中的 right_sibling是指向右鄰兄弟還是指向父親??紤]到對于現(xiàn)在的計算機,內(nèi)存已經(jīng)不是很重要的限制因素了。我們下面就采取增加一個parent域的方案,以改進左兒子右兄弟表示法中Parent操作的效率。因此重新定義樹的類型如下:若用指針實現(xiàn),其類型定義為:Type TPosition=NodeType; NodeType=record
6、; Label:LabelType; Parent,Leftmost_Child,Right_Sibling:TPosition; 增加一個Parent域 end; TreeType=TPosition;var Tree:TreeType; 若用游標實現(xiàn),
7、其類型定義為:Type TPosition=integer; NodeType=record Label:LabelType; Parent,Leftmost_Child,Right_Sibling:TPosition; 增加一個Parent域
8、 end; CellspaceType=array 1.MaxNodeCount of NodeType; TreeType=TPosition;var Cellspace:CellspaceType; Tree:TreeType; 下面我們只針對上面的指針實現(xiàn)方案實現(xiàn)樹的ADT操作。對于指針實現(xiàn)的樹,空結(jié)點表示空指針nil。對于浮標實現(xiàn)的樹,可以類似地實現(xiàn)下面的操作。指針實現(xiàn)的左兒子右兄弟表示法實現(xiàn)的ADT樹操作函數(shù) Leftmost_Child(v,T)功能這是一個求最左兒子結(jié)點的函數(shù)。函數(shù)值為樹T中結(jié)點v的最左兒子的位置。當v是葉結(jié)點時,函數(shù)值為n
9、il,表示結(jié)點v沒有兒子。實現(xiàn)Function Leftmost_Child(v:TPosition;var T:TreeType):TPosition;begin return(v.Leftmost_Child);end;說明返回v的最左兒子的位置指針。復雜性顯然為O(1)。函數(shù) Right_Sibling(v,T)功能這是一個求右鄰兄弟的函數(shù),函數(shù)值為樹T中結(jié)點v的右鄰兄弟。當v沒有右鄰兄弟時,函數(shù)值為nil。實現(xiàn)Function Right_Sibling(v:TPosition;var T:TreeType):TPosition;begin return(v.Rig
10、ht_Sibling);end;說明返回v的右鄰兄弟的位置指針。復雜性顯然為O(1)。函數(shù) Parent(v,T)功能這是一個求父結(jié)點的函數(shù),函數(shù)值為樹T中結(jié)點v的父親在結(jié)點表中的位置。當v是根結(jié)點時,函數(shù)值為nil,表示結(jié)點v沒有父結(jié)點。實現(xiàn)Function Parent(v:TPosition;var T:TreeType):TPosition;begin return(v.Parent);end;說明返回v的父結(jié)點的位置指針。復雜性顯然為O(1)。函數(shù) Create(i,x,T1,T2,.,Ti)功能這是一族建樹過程。對于每一個非負整數(shù)i,該函數(shù)生成一個新樹T,T的根結(jié)點v的標
11、號為x,并令v有i個兒子,這些兒子從左到右分別為樹T1,T2,.,Ti的根。當i=0時,v既是樹根,又是樹葉。實現(xiàn)Function Create(i:integer;var x:LabelType;var T1,T2,.,Ti,T:TreeType);begin New(T); 建T的根結(jié)點 T.Label:=x; T.Parent:=nil; T.Right_Sibling:=nil; if i>0 then begin T.Leftmost_Child:=T1; &
12、#160; for k:=1 to i do begin Tk.Parent:=T; if k<i then Tk.Right_Sibling:=Tk+1 else Tk.Right_Sibling:=nil; end; end;end;說明這個過程首先生成新樹的根結(jié)點,其中存儲的數(shù)據(jù)為x;然后對于每一個Tk,1ki,將T
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 寢室管理及安全管理制度
- 單位水電及設備管理制度
- 昆明規(guī)范發(fā)票管理制度
- 服務中心停車管理制度
- 個性化培訓場所管理制度
- 春季果樹灌溉管理制度
- 景區(qū)資源保護管理制度
- 公司技術(shù)部研發(fā)管理制度
- 創(chuàng)業(yè)公司合伙人管理制度
- 施工重點崗位管理制度
- 2024-2025學年高中中國航天日班會 課件 弘揚航天精神 逐夢星辰大海
- 不穩(wěn)定型心絞痛護理診斷及護理措施
- 年中國金骨蓮膠囊市場分析及發(fā)展策略研究預測報告
- 藥品配送運輸流程圖解
- 商業(yè)安全培訓
- 腹膜透析圍手術(shù)期的護理
- 虛擬實驗在高中生物學實驗教學中的應用研究
- 糖尿病足護理疑難病例討論
- 頻繁停電培訓課件
- 2025年度數(shù)據(jù)中心制冷設備采購與安裝施工合同范本
- 2025年廣西宏桂資本運營集團招聘筆試參考題庫含答案解析
評論
0/150
提交評論