版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
學習目標樹二叉樹的定義及性質二叉樹的遍歷樹與二叉樹的轉換學習目標樹1樹樹的定義樹的術語樹樹的定義2樹的定義樹(tree)是由n(n≥0)個結點組成的有限集合。n=0的樹稱為空樹;對n>0的樹T,有:有一個特殊的結點稱為根結點(root),它只有直接后繼結點,沒有直接前驅結點。當n>1時,除根結點之外的其他結點分為m(m≥0)個互不相交的集合T1,T2,…,Tm,其中每個集合Tm(1≤i≤m)本身又是一棵結構與樹類同的子樹(subtree)。每棵子樹的根結點有且僅有一個直接前驅結點,但可以有零或多個直接后繼結點。樹的定義樹(tree)是由n(n≥0)個結點組成的有限集合。3樹的術語結點孩子結點與雙親結點兄弟結點祖先結點與后代結點結點的度葉子結點與分支結點樹的度樹的術語結點4二叉樹的定義及性質二叉樹的定義二叉樹的性質二叉樹的存儲結構聲明二叉樹類二叉樹的定義及性質二叉樹的定義5二叉樹的定義二叉樹的遞歸定義二叉樹(binarytree)是n(n≥0)個結點組成的有限集合。n=0時稱為空二叉樹;n>0的二叉樹由一個根結點和兩棵互不相交的、分別稱為左子樹和右子樹的子二叉樹構成。二叉樹的定義二叉樹的遞歸定義6二叉樹的基本形態(tài)3個結點樹與二叉樹的基本形態(tài)二叉樹的基本形態(tài)3個結點樹與二叉樹的基本形態(tài)7二叉樹的性質性質1若根結點的層次為1,則二叉樹第i層的結點數(shù)目最多為2i-1(i≥1)。性質2在深度為k的二叉樹中,至多有2k-1個結點(k≥0)。性質3二叉樹中,若葉子結點數(shù)為n0,2度結點數(shù)為n2,則有n0=n2+1。二叉樹的性質性質18滿二叉樹與完全二叉樹性質4如果一棵完全二叉樹有n個結點,則其深度。性質5若將一棵具有n個結點的完全二叉樹按順序表示,對于編號為i(1≤i≤n)的結點,有如下特點:若i=1,則i為根結點,無雙親;若i≠1,則i的雙親是編號為i/2的結點。若2i≤n,則i的左孩子是編號為2i的結點;若2i>n,則i無左孩子。若2i+1≤n,則i的右孩子是編號為2i+1的結點;若2i+1>n,則i無右孩子。滿二叉樹與完全二叉樹9二叉樹的存儲結構二叉樹的順序存儲結構二叉樹的存儲結構二叉樹的順序存儲結構10二叉樹的鏈式存儲結構二叉樹的鏈式存儲結構11聲明二叉樹類二叉樹的結點類public
classTreeNode{ publicObjectdata;//數(shù)據(jù)元素
publicTreeNodeleft,right;//指向左、右孩子結點的鏈
publicTreeNode(){ this("?"); } publicTreeNode(Objecto){//構造有值結點
data=o; left=null; right=null; }}聲明二叉樹類二叉樹的結點類12二叉樹類節(jié)點public
voidsetData(Objectdata){this.data=data;}publicObjectgetData(){return
data;}public
voidsetLeft(TreeNodeleft){this.left=left;}publicTreeNodegetLeft(){return
left;}二叉樹類節(jié)點publicvoidsetData(Obje13二叉樹類節(jié)點publicTreeNodesetRight(TreeNoderight){return
this.right=right;}publicTreeNodegetRight(){return
right;}//測試一個節(jié)點是否是葉子節(jié)點public
booleanisLeaf(){return
left==null&&right==null;}//如何從最左節(jié)點或最右節(jié)點獲取數(shù)據(jù)?二叉樹類節(jié)點publicTreeNodesetRight14二叉樹類節(jié)點//從最左節(jié)點或最右節(jié)點獲取數(shù)據(jù)publicObjectgetLeftmostData(){if(left==null){return
data;}else{return
left.getLeftmostData();}}//如何刪除最左節(jié)點或最右節(jié)點?提示:二叉樹類節(jié)點//從最左節(jié)點或最右節(jié)點獲取數(shù)據(jù)15二叉樹類節(jié)點//刪除最左或最右節(jié)點publicTreeNoderemoveLeftmost(){if(left==null){//最左節(jié)點是根節(jié)點,因為它沒有左孩子return
right;}else{//一個遞歸調用刪除左子樹的最左節(jié)點left=left.removeLeftmost();return
this;}}二叉樹類節(jié)點//刪除最左或最右節(jié)點16練習提供復制一棵二叉樹的方法publicstaticTreeNodetreeCopy(TreeNodesource)練習提供復制一棵二叉樹的方法17練習編寫程序,求尋找最右邊節(jié)點的方法。編寫程序,求刪除最右邊節(jié)點的方法。練習編寫程序,求尋找最右邊節(jié)點的方法。18學習目標樹二叉樹的定義及性質二叉樹的遍歷樹與二叉樹的轉換學習目標樹19樹樹的定義樹的術語樹樹的定義20樹的定義樹(tree)是由n(n≥0)個結點組成的有限集合。n=0的樹稱為空樹;對n>0的樹T,有:有一個特殊的結點稱為根結點(root),它只有直接后繼結點,沒有直接前驅結點。當n>1時,除根結點之外的其他結點分為m(m≥0)個互不相交的集合T1,T2,…,Tm,其中每個集合Tm(1≤i≤m)本身又是一棵結構與樹類同的子樹(subtree)。每棵子樹的根結點有且僅有一個直接前驅結點,但可以有零或多個直接后繼結點。樹的定義樹(tree)是由n(n≥0)個結點組成的有限集合。21樹的術語結點孩子結點與雙親結點兄弟結點祖先結點與后代結點結點的度葉子結點與分支結點樹的度樹的術語結點22二叉樹的定義及性質二叉樹的定義二叉樹的性質二叉樹的存儲結構聲明二叉樹類二叉樹的定義及性質二叉樹的定義23二叉樹的定義二叉樹的遞歸定義二叉樹(binarytree)是n(n≥0)個結點組成的有限集合。n=0時稱為空二叉樹;n>0的二叉樹由一個根結點和兩棵互不相交的、分別稱為左子樹和右子樹的子二叉樹構成。二叉樹的定義二叉樹的遞歸定義24二叉樹的基本形態(tài)3個結點樹與二叉樹的基本形態(tài)二叉樹的基本形態(tài)3個結點樹與二叉樹的基本形態(tài)25二叉樹的性質性質1若根結點的層次為1,則二叉樹第i層的結點數(shù)目最多為2i-1(i≥1)。性質2在深度為k的二叉樹中,至多有2k-1個結點(k≥0)。性質3二叉樹中,若葉子結點數(shù)為n0,2度結點數(shù)為n2,則有n0=n2+1。二叉樹的性質性質126滿二叉樹與完全二叉樹性質4如果一棵完全二叉樹有n個結點,則其深度。性質5若將一棵具有n個結點的完全二叉樹按順序表示,對于編號為i(1≤i≤n)的結點,有如下特點:若i=1,則i為根結點,無雙親;若i≠1,則i的雙親是編號為i/2的結點。若2i≤n,則i的左孩子是編號為2i的結點;若2i>n,則i無左孩子。若2i+1≤n,則i的右孩子是編號為2i+1的結點;若2i+1>n,則i無右孩子。滿二叉樹與完全二叉樹27二叉樹的存儲結構二叉樹的順序存儲結構二叉樹的存儲結構二叉樹的順序存儲結構28二叉樹的鏈式存儲結構二叉樹的鏈式存儲結構29聲明二叉樹類二叉樹的結點類public
classTreeNode{ publicObjectdata;//數(shù)據(jù)元素
publicTreeNodeleft,right;//指向左、右孩子結點的鏈
publicTreeNode(){ this("?"); } publicTreeNode(Objecto){//構造有值結點
data=o; left=null; right=null; }}聲明二叉樹類二叉樹的結點類30二叉樹類節(jié)點public
voidsetData(Objectdata){this.data=data;}publicObjectgetData(){return
data;}public
voidsetLeft(TreeNodeleft){this.left=left;}publicTreeNodegetLeft(){return
left;}二叉樹類節(jié)點publicvoidsetData(Obje31二叉樹類節(jié)點publicTreeNodesetRight(TreeNoderight){return
this.right=right;}publicTreeNodegetRight(){return
right;}//測試一個節(jié)點是否是葉子節(jié)點public
booleanisLeaf(){return
left==null&&right==null;}//如何從最左節(jié)點或最右節(jié)點獲取數(shù)據(jù)?二叉樹類節(jié)點publicTreeNodesetRight32二叉樹類節(jié)點//從最左節(jié)點或最右節(jié)點獲取數(shù)據(jù)publicObjectgetLeftmostData(){if(left==null){return
data;}else{return
left.getLeftmostData();}}//如何刪除最左節(jié)點或最右節(jié)點?提示:二叉樹類節(jié)點//從最左節(jié)點或最右節(jié)點獲取數(shù)據(jù)33二叉樹類節(jié)點//刪除最左或最右節(jié)點publicTreeNoderemoveLeftmost(){if(left==null){//最左節(jié)點是根節(jié)點,因為它沒有左孩子return
right;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【名師一號】2022屆高三地理一輪復習演練:選修5-自然災害與防治5-5-
- 湖北省黃石市大冶市2024-2025學年七年級上學期期末考試數(shù)學試卷(無答案)
- 2024-2025學年部編版歷史九年級上冊期末復習練習題(含答案)
- 【創(chuàng)新設計】2021屆高考化學(廣東專用)一輪總復習限時訓練:第三章-課時1-鈉及其化合物
- 四年級數(shù)學(小數(shù)加減運算)計算題專項練習與答案
- 《滴眼藥水的護理》課件
- 《皮膚外用類用藥》課件
- 《汽車底盤機械系統(tǒng)檢測與修復》-考試題庫及答案 項目二 行駛系統(tǒng)檢修試題及答案
- 人教版初二八年級下冊歷史《香港及澳門回歸》
- 2024-2025學年七年級數(shù)學上學期期末模擬卷(冀教版)(原卷版)
- 四年級上冊數(shù)學人教版《加乘原理》課件
- 道德與法治-《我也有責任》觀課報告
- autocad二次開發(fā)教程基礎篇
- 2021四川省醫(yī)師定期考核題庫中醫(yī)類別(10套)
- 2023年農業(yè)綜合行政執(zhí)法理論考試題庫(含答案)
- GB/T 231.3-2022金屬材料布氏硬度試驗第3部分:標準硬度塊的標定
- GB/T 34766-2017礦物源總腐殖酸含量的測定
- 過敏性紫癜-教學課件
- GB/T 24183-2021金屬材料薄板和薄帶制耳試驗方法
- GB/T 11446.8-2013電子級水中總有機碳的測試方法
- 醫(yī)院患者壓力性損傷情況登記表
評論
0/150
提交評論