版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第三節(jié)樹表的查找(一)一、二叉排序樹1、二叉排序樹的概念(1)二叉排序樹的定義二叉排序樹(BinarySortTree,BST)又稱二叉查找,是一種特殊的二叉樹,二叉排序樹或者是空樹,或者是滿足如下性質(zhì)的二叉樹:①若它的左子樹非空,則左子樹上所有結(jié)點的值均小于根結(jié)點的值;②若它的右子樹非空,則右子樹上所有結(jié)點的值均大于根結(jié)點的值;③左、右子樹本身又各是一棵二叉排序樹?!纠肯聢D的就是一棵二叉排序樹中序遍歷序列:15,16,18,19,20,22,30,35,42(2)二叉排序樹的重要性質(zhì)中根遍歷一棵二叉排序樹所得的結(jié)點訪問序列是按鍵值的遞增序列。(3)二叉排序樹的數(shù)據(jù)類型定義typedefstructnode{KeyTypekey;//關(guān)鍵字DataTypeother;//其他數(shù)據(jù)域structnode*lchild,*rchild;//左右子樹指針}BsTNode;//結(jié)點類型typedefBsTNode*BsTree;//二叉排序樹類型2、二叉排序樹的插入(1)算法思想在二叉排序樹中插入新結(jié)點,要保證插入后仍滿足BST性質(zhì)。其插入過程是:①若二叉排序樹T為空,則為待插入的關(guān)鍵字key申請一個新結(jié)點,并令其為根;②若二叉排序樹T不為空,則將key和根的關(guān)鍵字比較:若二者相等,則說明樹中已有此關(guān)鍵字key,無須插入。若key<T→key,則將key插入根的左子樹中。若key>T→key,則將它插入根的右子樹中。子樹中的插入過程與上述的樹中插入過程相同。如此進(jìn)行下去,直到將key作為一個新的葉結(jié)點的關(guān)鍵字插入到二叉排序樹中,或者直到發(fā)現(xiàn)樹中已有此關(guān)鍵字為止。(2)實例分析【例】寫出把無序序列(20,10,30,15,25,5,35,12,27)建成二叉排序樹的過程。【解答】采用逐點插入結(jié)點的方法即可建立相應(yīng)的二叉排序樹。建成二叉排序樹的過程如圖所示(3)算法描述BSTreeInsertBST(BSTreeT,BSTNode*S){BSTNode*f,*p=T;while(p)//找插入位置{f=p;//f記錄p的雙親,為將來插入結(jié)點if(S->key<p->key)p=p->lchild;elsep=p->rchild;}if(T==NULL)T=S;//T為空樹,新結(jié)點作為根結(jié)點elseif(S->key<f->key)f->lchild=S;//作為雙親的左孩子插入elsef->rchild=S;//作為雙親的右孩子插入returnT;}3、二叉排序樹的生成(1)算法思想從空的二叉樹開始,每輸入一個結(jié)點數(shù)據(jù),生成一個新結(jié)點,就調(diào)用一次插入算法將它插入到當(dāng)前生成的二又排序樹中(2)算法描述BSTreeCreateBST(void){//從空樹開始,建立一棵二叉排序樹BSTreeT=NULL;//初始化T為空樹KeyTypekey;BSTNode*S;scanf("%d",&key);//輸入第一個關(guān)鍵字while(key)//假設(shè)key=0是輸入結(jié)束{S=(BSTNode*)malloc(Sizeof(BSTNode));S->key=key;//生成新結(jié)點S->1child=S->rchiId=NULL:T=InsertBST(T,S);//將新結(jié)點*S插入二叉排序樹Tscanf("%d",&key);//輸入下一個關(guān)鍵字}returnT;//返回建立的二叉排序樹}【例】已知某二叉排序樹10個結(jié)點的值依次為1~10,其結(jié)構(gòu)如圖所示,試標(biāo)出該二叉樹各結(jié)點所對應(yīng)的具體值?!痉治觥扛鶕?jù)二叉排序樹的的特點:對二叉排序樹進(jìn)行中序遍歷,得到的是從小到大的序列。給題中給出的二叉樹各結(jié)點填入字符,如圖所示;再對該二叉樹進(jìn)行中序遍歷得到序列:(D,J,I,G,B,A,E,H,C,F(xiàn));根據(jù)二叉排序樹的的特點和題目要求,這個序列對應(yīng)序列(1,2,3,4,5,6,7,8,9,10);將二叉樹中的字符改為對應(yīng)得數(shù)字即可?!窘獯稹慷鏄涓鹘Y(jié)點所對應(yīng)的具體值如圖所示。4、二叉排序樹上的查找(1)算法思想若二叉排序樹為空,則表明查找失敗,應(yīng)返回空指針。否則,若給定值key等于根結(jié)點的關(guān)鍵字,則表明查找成功,返回當(dāng)前根結(jié)點指針;若給定值key小于根結(jié)點的關(guān)鍵字,則繼續(xù)在根結(jié)點的左子樹中查找,若給定值key大于根結(jié)點的關(guān)鍵字,則繼續(xù)在根結(jié)點的右子樹中查找。顯然,這是一個遞歸的查找過程,(2)算法描述BSTNode*SearchBST(BSTreeT,KeyTypex){//在二叉排序樹上查找關(guān)鍵字值為x的結(jié)點if(T==NULL||T->key==x)returnT;if(x<T->key)returnSearchBST(T->lchild,x);elsereturnSearchBST(T->rchild,x);}(3)算法分析二叉排序樹上的查找長度與二叉排序樹的形態(tài)有關(guān),若二叉排序樹是一棵理想的平衡樹(是指樹中任一結(jié)點的左右子樹的高度差不能大于1),則進(jìn)行查找的時間復(fù)雜度為O(log2n);若退化為一棵單支樹,則其查找的時間復(fù)雜度為O(n)。對于一般情況,其時間復(fù)雜度應(yīng)為O(log2n)?!纠拷o定表(20,15,18,12,25,27,30,22,17,20,28),按數(shù)據(jù)元素在表中的次序構(gòu)造一棵二叉排序樹,求出其平均查找長度?!窘獯稹堪凑諛?gòu)造二叉排序樹方法,構(gòu)造結(jié)果如圖所示。平均查找長度為:(1+2×2+4×3+3×4+5×1)/11=34/115、二叉排序樹上的刪除從BST樹上刪除一個結(jié)點,仍然要保證刪除后滿足BST的性質(zhì)。設(shè)被刪除結(jié)點為p,其父結(jié)點為f,如圖(a)所示的BST樹。具體刪除情況分析如下:(1)若p是葉子結(jié)點:直接刪除p,如圖(b)所示。(2)若p只有一棵子樹(左子樹或右子樹),直接用p的左子樹(或右子樹)取代p的位置而成為f的一棵子樹。即原來p是f的左子樹,則p的子樹成為f的左子樹;原來p是f的右子樹,則p的子樹成為f的右子樹,如圖(c)所示。(3)若p既有左子樹又有右子樹,處理方法有以下兩種,可以任選其中一種。①用p的直接前驅(qū)結(jié)點(中序遍歷)代替p,即從p的左子樹中選擇值最大的結(jié)點s放在p的位置(用結(jié)點s的內(nèi)容替換結(jié)點p內(nèi)容),然后刪除結(jié)點s。s是p的左子樹中最右邊的結(jié)點且沒有右子樹,如圖(d)所示。②用p的直接后繼結(jié)點(中序遍歷)代替p,即從p的右子樹中選擇值最小的結(jié)點s放在p的位置(用結(jié)點s的內(nèi)容替換結(jié)點p的內(nèi)容),然后刪除結(jié)點s。s是p的右子樹中的最左邊的結(jié)點且沒有左子樹。例如,對圖(a)所示的二叉
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年滬科版必修3英語上冊月考試卷含答案
- 2025年外研版2024選修2地理上冊階段測試試卷
- 二零二五版門衛(wèi)值班人員設(shè)備維護(hù)聘用合同4篇
- 2025年度新能源汽車電池回收與利用分包合同4篇
- 二零二五年度智能物流解決方案內(nèi)部銷售承包合同4篇
- 二零二五年度木門行業(yè)環(huán)保標(biāo)準(zhǔn)采購合同2篇
- 《包裝設(shè)計》 案例賞析 第4章 香生記品牌包裝設(shè)計
- 2025版內(nèi)退員工勞動合同范本:食品行業(yè)專用4篇
- 2025年度影視基地租賃合同范本及知識產(chǎn)權(quán)保護(hù)協(xié)議3篇
- 2025年農(nóng)場農(nóng)業(yè)廢棄物回收利用服務(wù)合同4篇
- 平安產(chǎn)險陜西省地方財政生豬價格保險條款
- 銅礦成礦作用與地質(zhì)環(huán)境分析
- 30題紀(jì)檢監(jiān)察位崗位常見面試問題含HR問題考察點及參考回答
- 詢價函模板(非常詳盡)
- 《AI營銷畫布:數(shù)字化營銷的落地與實戰(zhàn)》
- 麻醉藥品、精神藥品、放射性藥品、醫(yī)療用毒性藥品及藥品類易制毒化學(xué)品等特殊管理藥品的使用與管理規(guī)章制度
- 一個28歲的漂亮小媳婦在某公司打工-被老板看上之后
- 乘務(wù)培訓(xùn)4有限時間水上迫降
- 2023年低年級寫話教學(xué)評語方法(五篇)
- DB22T 1655-2012結(jié)直腸外科術(shù)前腸道準(zhǔn)備技術(shù)要求
- GB/T 16474-2011變形鋁及鋁合金牌號表示方法
評論
0/150
提交評論