日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

k叉树的性质_相关树及性质

發(fā)布時(shí)間:2024/3/13 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 k叉树的性质_相关树及性质 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

二叉樹(shù)

性質(zhì):

第 n 層最多有 2n-1 個(gè)節(jié)點(diǎn)

深度為 k 的二叉樹(shù)最多有 2k - 1 個(gè)節(jié)點(diǎn)(滿二叉樹(shù))

對(duì)于任何一顆二叉樹(shù),如果其葉節(jié)點(diǎn)有 n0 個(gè),度為2的非葉節(jié)點(diǎn)有 n2個(gè),則有 n0 = n2 + 1

n個(gè)節(jié)點(diǎn)的完全二叉樹(shù)的深度為 ?log2n?+1

如果有一顆有n個(gè)節(jié)點(diǎn)的完全二叉樹(shù)的節(jié)點(diǎn)按層次序編號(hào),對(duì)任一層的節(jié)點(diǎn)i(1

i

n)有

如果i=1,則節(jié)點(diǎn)i是二叉樹(shù)的根,無(wú)雙親,如果i>1,則其雙親節(jié)點(diǎn)為 ?i/2?

如果2i>n,則節(jié)點(diǎn)i沒(méi)有左孩子,否則其左孩子為2i

如果2i+1>n,則節(jié)點(diǎn)沒(méi)有右孩子,否則右孩子為2i+1

image

image

滿二叉樹(shù)

節(jié)點(diǎn)的度都是2且葉子節(jié)點(diǎn)都在同一層次上

是一種特殊的二叉樹(shù)

完全二叉樹(shù)

與滿二叉樹(shù)深度相同,并且編號(hào)一一對(duì)應(yīng)的二叉樹(shù)

性質(zhì):

若 i

?n/2?,則結(jié)點(diǎn)i為分支結(jié)點(diǎn),否則為葉子結(jié)點(diǎn)

最下面層的葉節(jié)點(diǎn)一定出現(xiàn)在左邊

深度為k的完全二叉樹(shù),其最少的結(jié)點(diǎn)數(shù)=深度為 k-1 的滿二叉樹(shù)的結(jié)點(diǎn)數(shù)+1,即 2k-1個(gè);其最多結(jié)點(diǎn)數(shù)=深度為k的滿二叉樹(shù)的結(jié)點(diǎn)數(shù),即 2k-1

順序存儲(chǔ)完全二叉樹(shù)A[1,...,n],當(dāng) i

(n-1)/2 時(shí),結(jié)點(diǎn)A[i]的右孩子是結(jié)點(diǎn) A[2i+1]

哈夫曼樹(shù)(最優(yōu)二叉樹(shù))

性質(zhì):

有n個(gè)葉子結(jié)點(diǎn)

沒(méi)有度為1的結(jié)點(diǎn)

總的結(jié)點(diǎn)數(shù)為2n-1

深度

n-1

形態(tài)不唯一

要使一棵二叉樹(shù)的帶權(quán)路徑長(zhǎng)度最小,必須使權(quán)值越大的葉子節(jié)點(diǎn)越靠近根節(jié)點(diǎn),權(quán)值越小的節(jié)點(diǎn)越遠(yuǎn)離根節(jié)點(diǎn)

利用哈夫曼樹(shù)可構(gòu)造前綴編碼

最小生成樹(shù)

在連通網(wǎng)的所有生成樹(shù)中,所有邊的代價(jià)和最小的生成樹(shù)

看誰(shuí)代價(jià)最小,來(lái) PK 呀!P-prime, K-kruskal

prim算法

算法思想:從圖中任取一個(gè)頂點(diǎn),把它當(dāng)成一棵樹(shù),然后從這棵樹(shù)的頂點(diǎn)相鄰的邊中選取權(quán)值最小的邊,并把這條邊相鄰的頂點(diǎn)并入樹(shù)中,此時(shí)得到一顆有兩個(gè)頂點(diǎn)的樹(shù),然后繼續(xù)從這棵樹(shù)的兩個(gè)頂點(diǎn)相鄰的邊中選取一條最短的邊,將其和相鄰頂點(diǎn)再次并入樹(shù)中,重復(fù)操作直到所有頂點(diǎn)都被并入樹(shù)中。

prime算法圖解

kruskal算法

算法思想:每次從所有邊中選出權(quán)值最小的邊,將其并入樹(shù)中,重復(fù)操作直到所有頂點(diǎn)都被并入樹(shù)中。

kruskal算法圖解

圖片來(lái)源:https://blog.csdn.net/luoshixian099/article/details/51908175

二叉排序樹(shù)(二叉查找樹(shù))

性質(zhì):空樹(shù)/如果左子樹(shù)不為空,則左子樹(shù)的所有結(jié)點(diǎn)的值均小于根節(jié)點(diǎn);如果右子樹(shù)不為空,則右子樹(shù)的所有結(jié)點(diǎn)均大于根節(jié)點(diǎn);左右子樹(shù)分別也是二叉排序樹(shù)。中序遍歷會(huì)得到一個(gè)有序序列。

既擁有類似于折半查找的特性,又采用了鏈表做存儲(chǔ)結(jié)構(gòu),它是動(dòng)態(tài)查找表的一種適宜表示。其查詢效率高于鏈表結(jié)構(gòu)。

二叉排序樹(shù)

AVL樹(shù)(平衡二叉樹(shù))

它是二叉排序樹(shù)的一種改進(jìn),由于樹(shù)的高度越小,查找效率越高,所以盡可能的保持左右子樹(shù)高度平衡,會(huì)使得樹(shù)的高度達(dá)到最小。

性質(zhì):左子樹(shù)和右子樹(shù)都是平衡二叉樹(shù),且左子樹(shù)和右子樹(shù)的深度之差的絕對(duì)值不超過(guò)1。即就是平衡因子只會(huì)取 -1,0 ,1,因此此處的重點(diǎn)不斷的執(zhí)行是平衡調(diào)整。

基于二分法的策咯提高數(shù)據(jù)查找速度的二叉樹(shù)的數(shù)據(jù)結(jié)構(gòu)。

【例】若平衡二叉樹(shù)的高度為6,且所有非葉結(jié)點(diǎn)的平衡因子均為 1,則該平衡二叉樹(shù)的結(jié)點(diǎn)總數(shù)為20

B樹(shù)(多路平衡查找樹(shù))

B樹(shù)(B-tree)是在AVL樹(shù)基礎(chǔ)上的一種升級(jí),它是各個(gè)節(jié)點(diǎn)平衡因子都為0的多路平衡查找樹(shù)。

B樹(shù)一開(kāi)始是針對(duì)機(jī)械磁盤(pán)而設(shè)計(jì)的,因?yàn)闄C(jī)械磁盤(pán)的磁頭跳轉(zhuǎn)消耗的時(shí)間比較多,為了減少跳轉(zhuǎn)的次數(shù),所以設(shè)計(jì)了B-Tree。B樹(shù)的目標(biāo)是在 O(logn) 時(shí)間復(fù)雜度內(nèi),完成一些動(dòng)態(tài)操作。這種數(shù)據(jù)結(jié)構(gòu)多用于實(shí)現(xiàn)數(shù)據(jù)庫(kù)索引。紅黑二叉樹(shù)的時(shí)間復(fù)雜度也是 O(logn) ,但是B樹(shù)可以比紅黑二叉樹(shù)存儲(chǔ)更多的節(jié)點(diǎn)。屬于查找的應(yīng)用。

一顆3階B樹(shù)

一顆4階B樹(shù)

一顆 m 階的B樹(shù),或?yàn)榭諛?shù),或?yàn)闈M足下列特性的 m 叉樹(shù):

(1)樹(shù)中的每個(gè)結(jié)點(diǎn)

(2)若

不是葉子結(jié)點(diǎn),則

(3)除根結(jié)點(diǎn)外,

【例】在一棵高度為2的5階B樹(shù)中,所含關(guān)鍵字的個(gè)數(shù)最少是5。因?yàn)楦Y(jié)點(diǎn)關(guān)鍵字是5個(gè)的時(shí)候會(huì)產(chǎn)生分裂,高度正好變?yōu)?

(4)n個(gè)結(jié)點(diǎn)的m階B樹(shù)的

范圍:

(5)n個(gè)非葉結(jié)點(diǎn)的m階B樹(shù)

包含的關(guān)鍵字個(gè)數(shù):

(6)所有葉節(jié)點(diǎn)都在同一層

B樹(shù)中的葉結(jié)點(diǎn)又叫外部結(jié)點(diǎn),類似于查找判定樹(shù)的查找失敗結(jié)點(diǎn),實(shí)際上這些點(diǎn)并不存在。

結(jié)合下例理解:

一棵5階B樹(shù)

一棵5階B樹(shù)特點(diǎn)總結(jié)

B樹(shù)的關(guān)鍵字插入和刪除操作:

插入操作涉及到結(jié)點(diǎn)分裂的問(wèn)題

image.png

刪除操作涉及到結(jié)點(diǎn)合并的問(wèn)題

情況一: 被刪關(guān)鍵字是非終端結(jié)點(diǎn),則先用其前驅(qū)或后繼結(jié)點(diǎn)替代它,使得被刪結(jié)點(diǎn)落到終端結(jié)點(diǎn),然后走情況二;

先用前驅(qū)結(jié)點(diǎn)替代被刪結(jié)點(diǎn)

情況二: 被刪關(guān)鍵字在終端結(jié)點(diǎn)

step1. 結(jié)點(diǎn)關(guān)鍵字個(gè)數(shù)

?m/2?,直接刪除,否則走step2

step2. 兄弟夠借:被刪關(guān)鍵字所在的結(jié)點(diǎn)關(guān)鍵字個(gè)數(shù)為?m/2?-1 ,其左/右兄弟結(jié)點(diǎn)關(guān)鍵字個(gè)數(shù)

?m/2?,此時(shí)采用“父子換位法“執(zhí)行刪除操作;否則走step3

step3. 兄弟不夠借,被刪關(guān)鍵字所在的結(jié)點(diǎn)關(guān)鍵字個(gè)數(shù)為?m/2?-1 ,其左/右兄弟結(jié)點(diǎn)關(guān)鍵字個(gè)數(shù)也是?m/2?-1,則需將左/右兄弟結(jié)點(diǎn)關(guān)鍵字與父級(jí)結(jié)點(diǎn)關(guān)鍵字進(jìn)行合并

image.png

B+樹(shù)

B+樹(shù)是應(yīng)數(shù)據(jù)庫(kù)所需而生的一種B樹(shù)的變形樹(shù),相對(duì)于B樹(shù)來(lái)說(shuō)B+樹(shù)更充分的利用了節(jié)點(diǎn)的空間,磁盤(pán)讀寫(xiě)代價(jià)更低,查詢速度更加穩(wěn)定,其速度完全接近于二分法查找。適應(yīng)于操作系統(tǒng)中的文件索引和數(shù)據(jù)庫(kù)索引。B+樹(shù)既能順序查找,也能索引查找。

一顆4階B+樹(shù)

一棵m階的B+樹(shù)需滿足下列條件:

(1)每個(gè)分支結(jié)點(diǎn)最多有 m 顆子樹(shù)(孩子結(jié)點(diǎn));

(2)根結(jié)點(diǎn)(若不是葉結(jié)點(diǎn))至少有1個(gè)關(guān)鍵字,2顆子樹(shù),至多m個(gè)關(guān)鍵字,m顆子樹(shù);其它非葉結(jié)點(diǎn)至少有?m/2?個(gè)關(guān)鍵字,?m/2?顆子樹(shù),至多有m個(gè)關(guān)鍵字,m顆子樹(shù);

(3)結(jié)點(diǎn)的子樹(shù)個(gè)數(shù)與關(guān)鍵字個(gè)數(shù)相等;

(4)所有葉結(jié)點(diǎn)包含全部關(guān)鍵字以及指向相應(yīng)記錄的指針,葉結(jié)點(diǎn)中將關(guān)鍵字按大小順序排列,并且相鄰葉結(jié)點(diǎn)按大小順序相互鏈接起來(lái)。

(5)所有分支結(jié)點(diǎn)(可視為索引的索引)中僅包含它的各個(gè)子結(jié)點(diǎn)(即下一級(jí)的索引塊)中關(guān)鍵字的最大值及指向其子結(jié)點(diǎn)的指針;

一顆m階的B+樹(shù)與B樹(shù)的差異在于:

(1)在B+樹(shù)中,具有n個(gè)關(guān)鍵字的結(jié)點(diǎn)只含有n棵子樹(shù),即每個(gè)關(guān)鍵字對(duì)應(yīng)一顆子樹(shù);在B樹(shù)中,具有n個(gè)關(guān)鍵字的結(jié)點(diǎn)含有n+1顆子樹(shù)

(2)在B+樹(shù)中,每個(gè)結(jié)點(diǎn)(非根內(nèi)部結(jié)點(diǎn))的關(guān)鍵字個(gè)數(shù) n 的范圍是?m/2?

n

m(根節(jié)點(diǎn):1

n

m);在B樹(shù),每個(gè)結(jié)點(diǎn)(非根內(nèi)部結(jié)點(diǎn))的關(guān)鍵字個(gè)數(shù)n的范圍是?m/2?-1

n

m - 1(根節(jié)點(diǎn):1

n

m - 1)

(3)在B+樹(shù)中,葉結(jié)點(diǎn)包含信息,所有非葉結(jié)點(diǎn)僅起索引作用,非葉結(jié)點(diǎn)中的每個(gè)索引項(xiàng)只含有對(duì)應(yīng)子樹(shù)的最大關(guān)鍵字和指向該子樹(shù)的指針,不含有該關(guān)鍵字對(duì)應(yīng)記錄的存儲(chǔ)地址。

(4)在B+樹(shù)中,所有葉子結(jié)點(diǎn)中包含了全部關(guān)鍵字的信息,以及指向這些關(guān)鍵字記錄的指針,且葉子結(jié)點(diǎn)本身依關(guān)鍵字的大小自小而大順序鏈接;即在非葉結(jié)點(diǎn)中出現(xiàn)的關(guān)鍵字也會(huì)出現(xiàn)在葉節(jié)點(diǎn);而在B樹(shù)中,葉結(jié)點(diǎn)包含的關(guān)鍵字和其它結(jié)點(diǎn)包含的關(guān)鍵字是不重復(fù)的。

紅黑樹(shù)

紅黑樹(shù)(Red Black Tree) 是一種自平衡二叉查找樹(shù),它是一種特化的AVL樹(shù),都是在進(jìn)行插入和刪除操作時(shí)通過(guò)特定操作保持二叉查找樹(shù)的平衡,從而獲得較高的查找性能。若一棵二叉查找樹(shù)是紅黑樹(shù),則它的任一子樹(shù)必為紅黑樹(shù)。

性質(zhì):

(1)節(jié)點(diǎn)是紅色或黑色;

(2)根節(jié)點(diǎn)是黑色;

(3)所有葉子都是黑色;

(4)每個(gè)紅色節(jié)點(diǎn)的兩個(gè)子節(jié)點(diǎn)都是黑色。(從每個(gè)葉子到根的所有路徑上不能有兩個(gè)連續(xù)的紅色節(jié)點(diǎn))

(5)從任一節(jié)點(diǎn)到其每個(gè)葉子的所有路徑都包含相同數(shù)目的黑色節(jié)點(diǎn);

應(yīng)用:紅黑樹(shù)已廣泛應(yīng)用Linux 的進(jìn)程管理、內(nèi)存管理,設(shè)備驅(qū)動(dòng)及虛擬內(nèi)存跟蹤等一系列場(chǎng)景中。

鍵樹(shù)(數(shù)字查找樹(shù))

是一顆度

2的樹(shù),樹(shù)中的每個(gè)結(jié)點(diǎn)中不是包含一個(gè)或幾個(gè)關(guān)鍵字,而是只含有組成關(guān)鍵字的符號(hào)。

總結(jié)

以上是生活随笔為你收集整理的k叉树的性质_相关树及性质的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。