


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)據(jù)結(jié)構(gòu)-叉排序樹二叉排序樹(Bi nary Sort Tree)又稱二叉查找樹,亦稱二叉搜索樹。它或者是一棵空樹;或者是具有下列性質(zhì)的二叉樹:(1) 若左子樹不空,則左子樹上所有結(jié)點(diǎn)的值均小于它的根結(jié)點(diǎn)的值;(2) 若右子樹不空,則右子樹上所有結(jié)點(diǎn)的值均大于它的根結(jié)點(diǎn)的值;(3) 左、右子樹也分別為二叉排序樹;一、查找:步驟:若根結(jié)點(diǎn)的關(guān)鍵字值等于查找的關(guān)鍵字,成功。否則,若小于根結(jié)點(diǎn)的關(guān)鍵字值,遞歸查左子樹。若大于根結(jié)點(diǎn)的關(guān)鍵字值,遞歸查右子樹。若子樹為空,查找不成功。平均情況分析(在成功查找兩種的情況下):在一般情況下,設(shè)P (n, i )且它的左子樹的結(jié)點(diǎn)個(gè)數(shù)為i時(shí)的平均查找 長(zhǎng)度。如
2、圖的結(jié)點(diǎn)個(gè)數(shù)為 n = 6且i = 3;則P (n,i )二P(6, 3)= 1+ ( P(3) + 1) * 3 + ( P(2) + 1) * 2 / 6= 1+ ( 5/3 + 1) * 3 + ( 3/2 + 1) * 2 / 6注意:這里P(3)、P(2)是具有3個(gè)結(jié)點(diǎn)、2個(gè)結(jié)點(diǎn)的二叉分類樹的平均 查找長(zhǎng)度。在一般情況,P( i )為具有i個(gè)結(jié)點(diǎn)二叉分類樹的平均查找長(zhǎng)度。P(3) =( 1+2+2) / 3 = 5/3P(2) =( 1+2) / 2 = 3/2 P (n,i ) = 1+ ( P(i) + 1) * i + ( P(n-i-1) + 1) * (n-i-1) / n
3、«-1P (n) = P (n,i ) / n <= 2(1+l/n)lnn因?yàn)?2(1+I/n)lnn 1.38logn 故 P(n)=O(logn)二、插入刪除與次優(yōu)二叉樹相對(duì),二叉排序 樹是一種動(dòng)態(tài)樹表。其特點(diǎn)是:樹 的結(jié)構(gòu)通常不是一次生成的,而是 在查找過程中,當(dāng)樹中不存在關(guān)鍵 字等于給定值的節(jié)點(diǎn)時(shí)再進(jìn)行插 入。新插入的結(jié)點(diǎn)- 定是一 -個(gè)新添 加的葉子節(jié)點(diǎn),并且是查找不成功 時(shí)查找路徑上訪問的最后一個(gè)結(jié)點(diǎn) 的左孩子或右孩子結(jié)點(diǎn)。三、插入算法首先執(zhí)行查找算法,找出被插結(jié)點(diǎn)的父親結(jié)點(diǎn)。判斷被插結(jié)點(diǎn)是其父親結(jié)點(diǎn)的左、右兒子。將被插結(jié)點(diǎn)作為葉子結(jié)點(diǎn)插入 若二叉樹為空。則首先單
4、獨(dú)生成根結(jié)點(diǎn)。注意:新插入的結(jié)點(diǎn)總是葉子結(jié)點(diǎn)。void InsertBST(t , key)if(t=NULL)t=newBiTree;t->lchild=t->rchild=NULL;t->data=key;return;if(key<t->data )In sertBST(t->lchild,key);elseIn sertBST (t->rchild, key );n個(gè)數(shù)據(jù)在數(shù)組d中,tree為二叉排序樹根void CreateBiTree(tree,d , n)tree=NULL;for(i=0;i< n;i+)In sertBST(tr
5、ee,di);最小值二叉樹c例程:#i nclude<stdio.h>struct priorityqueueintcapacity;intsize;structpriorityqueue *eleme nts;*tryit;structpriorityqueue *in itialize ( intmaxeleme nts )structpriorityqueue *h;h = malloc( sizeof ( struct priorityqueue );h -> eleme nts = malloc( sizeof ( int ) * ( maxeleme nts+ 1
6、 );h -> capacity = maxeleme nts;h -> size = 0;h -> eleme nts0 = -23767;returnh;void in sert ( intx , struct priorityqueue *h )int i;for ( i = +h -> size ; h -> eleme nts i / 2 > x ; i/= 2 )h -> elements i = h -> elements i / 2 ;h -> eleme nts i = x;int deletem in ( structp
7、riorityqueue *h )int i , child ;intmin eleme nt , lasteleme nt;min eleme nt = h -> eleme nts 1 ;lastelement = h -> elements h -> size-;for ( i = 1 ; i * 2 <= h -> size ; i = child )child = i * 2;if( child != h -> size && h -> elements child< h -> eleme nts child )c
8、hild+;if( lasteleme nt > h -> eleme nts child )h -> elements i = h -> elements child ;elsebreak;h -> elements i = lastelement;returnmin eleme nt;mai n()tryit = in itialize ( 10 );in sert ( 4 , tryit );in sert ( 5 , tryit );in sert ( 10 , tryit );in sert ( 3 , tryit );printf("%dn&
9、quot;,deletemin (tryit );printf("%dn",deletemin (tryit );printf("%dn",deletemin (tryit );printf("%dn",deletemin (tryit );getch();四、刪除結(jié)點(diǎn)在二二叉排序樹刪去一個(gè)結(jié)點(diǎn),分三種情況討論:1.若*p結(jié)點(diǎn)為葉子結(jié)點(diǎn),即PL(左子樹)和PR佑子樹)均為空樹。由于刪去葉子結(jié)點(diǎn)不破壞整棵樹的結(jié)構(gòu),則只需修改其雙親結(jié)點(diǎn)的指針即可2. 若*p結(jié)點(diǎn)只有左子樹PL或右子樹PR此時(shí)只要令PL或PR直接成為其 雙親結(jié)點(diǎn)*f的左子樹
10、(當(dāng)*p是左子樹)或右子樹(當(dāng)*p是右子樹)即可, 作此修改也不破壞二叉排序樹的特性。3. 若*p結(jié)點(diǎn)的左子樹和右子樹均不空。在刪去*p之后,為保持其它元素之 間的相對(duì)位置不變,可按中序遍歷保持有序進(jìn)行調(diào)整,可以有兩種做法:其一是令*p的左子樹為*f的左/右(依*p是*f的左子樹還是右子樹而定) 子樹,*s為*p左子樹的最右下的結(jié)點(diǎn),而*p的右子樹為*s的右子樹; 其二是令*p的直接前驅(qū)(或直接后繼)替代*p,然后再?gòu)亩媾判驑渲?刪去它的直接前驅(qū)(或直接后繼)一即讓 *f的左子樹(如果有的話)成為 *p左子樹的最左下結(jié)點(diǎn)(如果有的話),再讓*f成為*p的左右結(jié)點(diǎn)的父結(jié) 點(diǎn)。在二叉排序樹上刪除
11、一個(gè)結(jié)點(diǎn)的算法如下:#defi ne Status boolStatus Delete(BiTree*); /必須先申明Status DeleteBST(BiTree &T, KeyType key)/若二叉排序樹T中存在關(guān)鍵字等于key的數(shù)據(jù)元素時(shí),則刪除該數(shù)據(jù)元素, 并返回/TRUE ;否貝U返回 FALSEif(!T)return false; /不存在關(guān)鍵字等于key的數(shù)據(jù)元素elseif(key = T->data.key) /找到關(guān)鍵字等于 key的數(shù)據(jù)元素returnDelete(T);else if(key < T->data.key)returnDe
12、leteBST(T->lchild, key);elsereturnDeleteBST(T->rchild, key);ture;returnStatus Delete(BiTree & p)/從二叉排序樹中刪除結(jié)點(diǎn)p,并重接它的左或右子樹if(!p->rchild) /右子樹空則只需重接它的左子樹q=p; p=p->lchild; deleteq;else if(!p->lchild) /左子樹空只需重接它的右子樹q=p;p=p->rchild; deleteq;else /左右子樹均不空q=p; s=p->lchild; while(s->rchild)q=s; s=s->rchild; /轉(zhuǎn)左,然后向右到盡頭p->data = s->data; /s指向被刪結(jié)點(diǎn)的前驅(qū)”if(q!=p)q->rchild = s->lchild; /重接*q的右子樹elseq
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZZB 3624-2024 1000kV交流架空輸電線路金具
- T-ZHCA 031-2024 淋洗類化妝品溫和性評(píng)價(jià) 重建表皮模型組織活力法
- 二零二五年度房屋代管及租戶租賃合同終止通知協(xié)議
- 二零二五年度公共設(shè)施配套拆遷房產(chǎn)分割及公益基金合同
- 2025年度門面轉(zhuǎn)讓及獨(dú)家代理權(quán)合同
- 二零二五年度合資公司股權(quán)合作協(xié)議書
- 2025年度網(wǎng)絡(luò)安全責(zé)任方合作協(xié)議范本(適用于互聯(lián)網(wǎng)企業(yè))
- 二零二五年度車輛抵押抵貨款金融創(chuàng)新服務(wù)協(xié)議
- 二零二五年度銷售團(tuán)隊(duì)市場(chǎng)分析聘用協(xié)議
- 二零二五年度農(nóng)村房屋租賃與農(nóng)村社區(qū)文化活動(dòng)合作協(xié)議
- 學(xué)習(xí)與科技的融合主題班會(huì)
- 《直播銷售》課件-項(xiàng)目一 認(rèn)識(shí)直播與直播銷售
- 2025年南京科技職業(yè)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點(diǎn)試題含答案解析
- 2025-2030年中國(guó)航空配餐行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及投資前景規(guī)劃研究報(bào)告
- 新課標(biāo)背景下的跨學(xué)科學(xué)習(xí)內(nèi)涵、設(shè)置邏輯與實(shí)踐原則
- 母嬰分離產(chǎn)婦的護(hù)理
- 2025教科版一年級(jí)科學(xué)下冊(cè)教學(xué)計(jì)劃
- 人教版高一上學(xué)期數(shù)學(xué)(必修一)期末考試卷(附答案)
- DBJT14-100-2013 外墻外保溫應(yīng)用技術(shù)規(guī)程(改性酚醛泡沫板薄抹灰外墻外保溫系統(tǒng))
- 2024解析:第六章質(zhì)量和密度-講核心(解析版)
- 培訓(xùn)學(xué)校教師崗位職責(zé)
評(píng)論
0/150
提交評(píng)論