




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)結(jié)構(gòu)與算二叉主講教 大4.1二叉樹(shù)的概4.2二叉樹(shù)的主要性4.3二叉樹(shù)的抽象數(shù)據(jù)類4.4周游二叉4.5二叉樹(shù)的實(shí)4.6二叉搜索4.7堆與優(yōu)先隊(duì)4.8Huffman編碼信息學(xué) Page4.2二叉樹(shù)的主要性滿二叉樹(shù)定理:非空滿二叉樹(shù)樹(shù)葉數(shù)等于其分支結(jié)點(diǎn)數(shù)加證明:設(shè)二叉樹(shù)結(jié)點(diǎn)數(shù)為n,葉結(jié)點(diǎn)數(shù)m,分支結(jié)點(diǎn)數(shù)為b。有n(總結(jié)點(diǎn)數(shù)=m(葉)+b(分支) (公式4.1)∵每個(gè)分支,恰有兩個(gè)子結(jié)點(diǎn)(滿),故有2*b條邊;一顆二叉樹(shù),除根結(jié)點(diǎn)外,每個(gè)結(jié)點(diǎn)都恰有一接父結(jié)點(diǎn),故共有n-1條邊即n-1= (公式∴由(公式4.1),(公式4.2)n-1=m+b-12b,得出m(葉)=b(分支)+1信息學(xué) Page4.2二叉樹(shù)的性質(zhì)(續(xù)滿二叉樹(shù)定理推論:一個(gè)非空二叉樹(shù)的空子樹(shù)(指針數(shù)目等于其結(jié)點(diǎn)數(shù)加1證明:1設(shè)二叉樹(shù)T,將其所有空子樹(shù)換為樹(shù)葉,記新的擴(kuò)充滿二叉樹(shù)為T(mén)’。原來(lái)T的結(jié)點(diǎn)現(xiàn)在是T’的分支結(jié)2根據(jù)滿二叉樹(shù)定理,新添加的樹(shù)葉數(shù)目等于T結(jié)點(diǎn)個(gè)數(shù)加1。而每個(gè)新添加的樹(shù)葉對(duì)應(yīng)T的一個(gè)空子因此:T中空子樹(shù)數(shù)目等于T中結(jié)點(diǎn)數(shù)加1信息學(xué) Page4.2二叉樹(shù)的性質(zhì)(續(xù)任何一顆二叉樹(shù),度為0的結(jié)點(diǎn)比度為2的結(jié)點(diǎn)多一個(gè)。證明:設(shè)有n個(gè)結(jié)點(diǎn)的二叉樹(shù)的度為0、1、2的結(jié)點(diǎn)數(shù)分別為=n0,1,2,則nn0n1 (公式n=e+1。由于這些邊是有度為1和2的的結(jié)點(diǎn)發(fā)出的,因此e=n1+2·n2于是:n=e+1=n1+2·n2+1 n0n1+=+2·n21=n21信息學(xué) Page4.2二叉樹(shù)的性質(zhì)(續(xù)信息學(xué) Page4.2二叉樹(shù)的性質(zhì)(續(xù)4.二叉樹(shù)的第i層(根為第0層,i≥0)最多5.高度為深度為1;只有一個(gè)根結(jié)點(diǎn)的二叉樹(shù)的高度為1,深度為0的二叉樹(shù)至多有2k1個(gè)結(jié)點(diǎn)等比數(shù)列求和24+…)6.有n個(gè)結(jié)點(diǎn)(n>0)的完全二叉樹(shù)的高度為log2(n+1)(深度為log2(n+1)-1)信息學(xué) Page二叉樹(shù)的性質(zhì)(續(xù)6.有n個(gè)結(jié)點(diǎn)(n>0)的完全二叉樹(shù)的高度為(n+1)(深度為log2n+1)證明設(shè)所求完全二叉樹(shù)的高度為h它的前h1層都是滿的,最后一層可以滿,也可以不滿,由此得到如下不等式
性質(zhì)5:高度為k(深度為k-
-1<n
h-
度為1,深度為0)的二叉樹(shù)可變換為2h-1<n+1取對(duì)數(shù)后得到:h-1<log2(n+1
信息學(xué) Page大4.1二叉樹(shù)的概4.2二叉樹(shù)的主要性4.3二叉樹(shù)的抽象數(shù)據(jù)類4.4周游二叉4.5二叉樹(shù)的實(shí)4.6二叉搜索4.7堆與優(yōu)先隊(duì)4.8Huffman編碼信息學(xué) Page二叉樹(shù)的抽象數(shù)據(jù)類之上的各種可能運(yùn)算,這些運(yùn)算應(yīng)該適合二叉樹(shù)的各種應(yīng)用:二叉樹(shù)的某些運(yùn)算是針對(duì)整棵樹(shù)初始化二叉合并兩棵二叉二叉樹(shù)的大部分運(yùn)算都是圍繞結(jié)點(diǎn)某個(gè)結(jié)點(diǎn)的左子結(jié)點(diǎn)、右子結(jié)點(diǎn)、父結(jié)結(jié) 的數(shù)據(jù)信息學(xué) Page參數(shù)T的模板,T是 每個(gè)結(jié)點(diǎn)都有l(wèi)eftchild和rightchild左右子結(jié)點(diǎn)結(jié)另外每個(gè)結(jié)點(diǎn)還包含一個(gè)數(shù)據(jù)域value 信息學(xué) Page二叉樹(shù)結(jié)點(diǎn)的抽象數(shù)據(jù)類template<classT>classBinaryTreeNode{//申明二叉樹(shù)為結(jié)點(diǎn)類的友元類,便 私有數(shù)據(jù)成friendclassTelement;//具體實(shí)現(xiàn)可以補(bǔ)充private的左、右子結(jié)點(diǎn)定信息學(xué) Page二叉樹(shù)結(jié)點(diǎn)的抽象數(shù)據(jù)類 BinaryTreeNode(constT&ele);//拷貝構(gòu)造函BinaryTreeNode(constT&ele,BinaryTreeNode<T>*l,BinaryTreeNode<T>*r);Tvalue() //BinaryTreeNode<T>*leftchild()const;BinaryTreeNode<T>*rightchildconst;信息學(xué) Page二叉樹(shù)結(jié)點(diǎn)的抽象數(shù)據(jù)類//設(shè)置當(dāng)前結(jié)點(diǎn)的左子voidsetLeftchild(BinaryTreeNode<T>*)//設(shè)置當(dāng)前結(jié)點(diǎn)的右子voidsetRightchild(BinaryTreeNode<T>*)//設(shè)置當(dāng)前結(jié)點(diǎn)的數(shù)據(jù)voidsetValue(constT&boolisLeaf()const;BinaryTreeNode<T>&operator=(constBinaryTreeNode<T>&信息學(xué) Page二叉樹(shù)的抽象數(shù)據(jù)類template<classclassBinaryTree//二叉樹(shù)根結(jié)點(diǎn)指BinaryTreeNode<T>*//從二叉樹(shù)的root結(jié)點(diǎn)開(kāi)始BinaryTreeNode<T>*GetParentBinaryTreeNode<T>*root,BinaryTreeNode<T>*current信息學(xué) Page二叉樹(shù)的抽象數(shù)據(jù)類 //構(gòu)造函~BinaryTree{DeleteBinaryTree(root);};//析構(gòu)函boolisEmpty //判定二叉樹(shù)//返回二叉樹(shù)根結(jié)BinaryTreeNode<T>*Root(){returnroot;//返回current結(jié)點(diǎn)的父結(jié)BinaryTreeNode<T>*ParentBinaryTreeNode<T>*LeftSiblingBinaryTreeNode<T>*信息學(xué) Page二叉樹(shù)的抽象數(shù)據(jù)類//返回current結(jié)點(diǎn)的右兄BinaryTreeNode<T>*BinaryTreeNode<T>*//以elem作為根結(jié)點(diǎn),leftTree作為樹(shù)的左子樹(shù)voidCreateTree(constBinaryTreeNode<T>&elem,BinaryTree<T>&leftTree,BinaryTree<T>&rightTree);//刪除二叉樹(shù)或voidDeleteBinaryTree(BinaryTreeNode<T>*信息學(xué) Page二叉樹(shù)的抽象數(shù)據(jù)類//前序周游二叉樹(shù)或其子voidPreOrder(BinaryTreeNode<T>*//中序周游二叉樹(shù)或其子voidInOrder(BinaryTreeNode<T>*//后序周游二叉樹(shù)或其voidPostOrder(BinaryTreeNode<T>*//按層次周游二叉樹(shù)或其子voidLevelOrder(BinaryTreeNode<T>*信息學(xué) Page大4.1二叉樹(shù)的概4.2二叉樹(shù)的主要性4.3二叉樹(shù)的抽象數(shù)據(jù)類4.4周游二叉4.5二叉樹(shù)的實(shí)4.6二叉搜索4.7堆與優(yōu)先隊(duì)4.8Huffman編碼信息學(xué) Page周游二叉周游:系統(tǒng)地?cái)?shù)據(jù)結(jié)構(gòu)中的結(jié)點(diǎn),且每個(gè)結(jié)點(diǎn)都正好被到一次。信息學(xué) Page二叉樹(shù)周4.4.1深度優(yōu)先周游二叉4.4.2非遞歸深度優(yōu)先周游二叉4.4.3廣度優(yōu)先周游二叉信息學(xué) Page4.4.1深度優(yōu)先周游二叉改變根結(jié)點(diǎn)的周游順序,得到以下三種方案①前序周游(NLR次序): 信息學(xué) Page示深度周游如下二叉樹(shù)(先序信息學(xué) Page示深度周游如下二叉樹(shù)(中序信息學(xué) Page示深度周游如下二叉樹(shù)(后序信息學(xué) Page示深度周游二叉樹(shù)結(jié)序周游序周游序周游信息學(xué) Page深度優(yōu)先周游二叉(遞歸實(shí)現(xiàn)template<classvoid(BinaryTreeNode<T>*root){if(root!=NULL){ } 信息學(xué) Page二叉樹(shù)中遞歸調(diào)用示A
D
G
完成中 信息學(xué)
H
二叉樹(shù)后遞歸調(diào)用示
C
D
G
完成后 信息學(xué)
H
4.4周游二叉二叉樹(shù)周4.4.1深度優(yōu)先周游二叉4.4.2非遞歸深度優(yōu)先周游二叉4.4.3廣度優(yōu)先周游二叉信息學(xué) Page深度優(yōu)先周游二叉(非遞歸深度優(yōu)先二叉樹(shù)周游是遞歸定義的棧利用一個(gè)棧來(lái)記下尚待周游的結(jié)點(diǎn)或子樹(shù)以備以后 。信息學(xué) Page舉八皇后問(wèn)信息學(xué) Page舉八皇后問(wèn)信息學(xué) Page非遞歸中序周游二叉思想遇到一個(gè)結(jié)點(diǎn),就把它推入棧中,并去周游它的左子 void信
PageSTL里的stack(需要包含#include<通過(guò)命名空間來(lái)區(qū)分不同的類或函數(shù)等,避免導(dǎo)致全局命名問(wèn)題。所謂命名空間,是一種將程序庫(kù)名稱封裝起來(lái){方法,像在各個(gè)程序庫(kù)中立起一道道圍墻usingstd::stack; stack<BinaryTreeNode<T>*aStack;BinaryTreeNode<T>*pointer=root;while(!aStack.empty()||pointer){if(pointer)//當(dāng) 結(jié)構(gòu)指向左孩 信息學(xué) Pageelse
//左子 完畢,轉(zhuǎn) 右子 當(dāng)前結(jié)}}//end 信息學(xué) Page非遞歸前序周游二叉思想遇到一個(gè)結(jié)點(diǎn), 該結(jié)點(diǎn),并把此結(jié)點(diǎn)推入棧中,然下降去周游它的左子樹(shù)周游完它的左子樹(shù)后,從棧頂托出這個(gè)結(jié)點(diǎn),并按照它的右template<classvoid(BinaryTreeNode<T>*信息學(xué) Page{using //使用STL中的stack<BinaryTreeNode<T>*>aStack;BinaryTreeNode<T>*pointer=root;while(!aStack.empty()||pointer){if(pointer)Visit(pointer->value()); 當(dāng)前結(jié)//當(dāng) 結(jié)構(gòu)指向左孩pointer=pointer-}信息學(xué) Pageelse}
//左子 完畢,轉(zhuǎn) 右子//當(dāng) 結(jié)構(gòu)指向右孩pointer=pointer-//棧頂元素退}//end}信息學(xué) Page非遞歸后序周游二叉思想遇到一個(gè)結(jié)點(diǎn),把它推入棧中,周游它的左子樹(shù)周游結(jié)束后,還不能 問(wèn)處于棧頂?shù)脑摻Y(jié)點(diǎn)再按照它的 結(jié)構(gòu)指示的地址去周游該結(jié)點(diǎn)的右子樹(shù)周游遍右子樹(shù)后才能從棧頂托出該結(jié)點(diǎn) 之信息學(xué) Page解決方案需要給棧中的每個(gè)元素加上一個(gè)特征位,以便欲從棧頂托出一個(gè)結(jié)點(diǎn)時(shí)區(qū)別是從棧頂元素左邊回來(lái)的則要繼續(xù)周游右子樹(shù),還是從右邊回來(lái)的該結(jié)點(diǎn)的左、右子樹(shù)均已周游特征為L(zhǎng)ft征為Right表示已進(jìn)入該結(jié)點(diǎn)的右子樹(shù),將從右邊回來(lái)。信息學(xué) Page定義棧中元素類enumTags{Left,Right}; template<classT>class //棧元素的定{//指向二叉樹(shù)結(jié)點(diǎn)BinaryTreeNode<T>*//特征標(biāo)識(shí)申Tags信息學(xué) Page非遞歸后序周游二叉樹(shù)實(shí)template<classvoid(BinaryTreeNode<T>*{usingstd::stack;//使用STL棧部分StackElement<T>ele
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024國(guó)能神東煤炭集團(tuán)有限責(zé)任公司第二批系統(tǒng)內(nèi)招聘70人筆試參考題庫(kù)附帶答案詳解
- 20以內(nèi)加減法練習(xí)題151
- 2024四川九州電子科技股份有限公司終止中層管理人員招聘筆試參考題庫(kù)附帶答案詳解
- 2025年邯鄲幼兒師范高等??茖W(xué)校單招職業(yè)傾向性測(cè)試題庫(kù)新版
- Starter hold a party 教學(xué)設(shè)計(jì) - 2024-2025學(xué)年外研版英語(yǔ)七年級(jí)上冊(cè)
- 第五章 專題 拋體運(yùn)動(dòng)的臨界問(wèn)題 集體備課教學(xué)設(shè)計(jì) -2023-2024學(xué)年高一下學(xué)期物理人教版(2019)必修第二冊(cè)
- 2025年廣東工程職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)必考題
- 2024四川華豐科技股份有限公司招聘自動(dòng)化工程師崗位擬錄用人員筆試參考題庫(kù)附帶答案詳解
- 第15課 物聯(lián)系統(tǒng)原型的運(yùn)行與調(diào)試 教學(xué)設(shè)計(jì) -初中信息技術(shù)七年級(jí)下冊(cè)浙教版2023
- 2025至2030年中國(guó)水族噴泉數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 《實(shí)用日本語(yǔ)應(yīng)用文寫(xiě)作》全套電子課件完整版ppt整本書(shū)電子教案最全教學(xué)教程整套課件
- 怎樣處理課堂突發(fā)事件
- 采礦學(xué)課程設(shè)計(jì)-隆德煤礦1.8Mta新井開(kāi)拓設(shè)計(jì)
- 中藥藥劑學(xué)講義(英語(yǔ)).doc
- 【課件】Unit1ReadingforWriting課件高中英語(yǔ)人教版(2019)必修第二冊(cè)
- Q∕GDW 10799.6-2018 國(guó)家電網(wǎng)有限公司電力安全工作規(guī)程 第6部分:光伏電站部分
- 滴灌工程設(shè)計(jì)示例
- 配套模塊an9238用戶手冊(cè)rev
- 醫(yī)院室外管網(wǎng)景觀綠化施工組織設(shè)計(jì)
- 霍尼韋爾DDC編程軟件(CARE)簡(jiǎn)介
- 論《說(shuō)文解字》中的水文化
評(píng)論
0/150
提交評(píng)論