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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

DF学数据结构系列——B树(B-树和B+树)介绍

發(fā)布時(shí)間:2025/5/22 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DF学数据结构系列——B树(B-树和B+树)介绍 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

B樹

定義:一棵B樹T是具有如下性質(zhì)的有根樹:

? ? ? ?1)每個(gè)節(jié)點(diǎn)X有以下域:

? ? ? ? ?a)n[x],當(dāng)前存儲(chǔ)在X節(jié)點(diǎn)中的關(guān)鍵字?jǐn)?shù),

? ? ? ? ?b)n[x]個(gè)關(guān)鍵字本身,以非降序存放,因此key1[x]<=key2[x]<=...<=keyn[x][x],

? ? ? ? ?c)leaf[x],是一個(gè)布爾值,如果x是葉子的話,則它為TRUE,如果x為一個(gè)內(nèi)節(jié)點(diǎn),則為FALSE。

? ? ? ?2)每個(gè)內(nèi)節(jié)點(diǎn)包含n[x]+1個(gè)指向其子女的指針c1[x],c2[x],...,cn[x]+1[x]。葉節(jié)點(diǎn)沒有子女,故它們的ci域無意義。

? ? ? ?3)各關(guān)鍵字keyi[x]對(duì)存儲(chǔ)在各子樹中的關(guān)鍵字范圍加以分隔:如果ki為存儲(chǔ)在以以ci[x]為根的子樹中的關(guān)鍵字,則

? ? ? ? ? ? ? ? ? ? ? ? ? ? ki<=key1[x]<=k2<=key2[x]<=...<=keyn[x]<=keyn[x]+1

? ? ? ?4)每個(gè)葉結(jié)點(diǎn)具有相同的深度,即樹高h(yuǎn)。

? ? ? ?5)每一個(gè)結(jié)點(diǎn)能包含的關(guān)鍵字樹有一個(gè)上界和下界。這些界可以用一個(gè)稱作B樹的最小度數(shù)的固定值t>=2表示。

? ? ? ? a)每個(gè)非根的結(jié)點(diǎn)必須至少有t-1個(gè)關(guān)鍵字。每個(gè)非根的內(nèi)結(jié)點(diǎn)至少有t個(gè)子女。如果樹是非空的,則根結(jié)點(diǎn)至少包含一個(gè)關(guān)鍵字。

? ? ? ? b)每個(gè)結(jié)點(diǎn)可包含最多2t-1個(gè)關(guān)鍵字,所以一個(gè)內(nèi)結(jié)點(diǎn)至多可以有2t個(gè)子女。我們說一個(gè)結(jié)點(diǎn)是滿的,如果它恰好有2t-1個(gè)關(guān)鍵字。

? ? ? ? ? ? t=2時(shí)B樹是最簡單的。這時(shí)每個(gè)內(nèi)結(jié)點(diǎn)有2個(gè)、3個(gè)或4個(gè)子女,亦即一棵2-3-4樹。然而在實(shí)際中,通常采用很大的t。

用途:

? ? ? B樹是為磁盤或其它輔助存儲(chǔ)設(shè)備而設(shè)計(jì)的一種多路平衡查找樹。

? ? ? 為什么針對(duì)磁盤設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)不同于這對(duì)隨機(jī)存儲(chǔ)器設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)?

? ? ? B樹以自然的方式推廣二叉查找樹。如果B樹的內(nèi)結(jié)點(diǎn)X包含n[x]個(gè)關(guān)鍵字,則x就有n[x]+1個(gè)子女。結(jié)點(diǎn)X中的關(guān)鍵字是用來將X所處理的關(guān)鍵字域劃分成n[x]+1個(gè)子域的分隔點(diǎn),每個(gè)子域都有X中的一個(gè)子女來處理。當(dāng)在一棵B樹中查找某個(gè)關(guān)鍵字時(shí),通過對(duì)存儲(chǔ)在結(jié)點(diǎn)X中的n[x]個(gè)關(guān)鍵字的比較,而做出一個(gè)n[x]+1路的決定。葉節(jié)點(diǎn)的結(jié)構(gòu)不同于內(nèi)部結(jié)點(diǎn)的結(jié)構(gòu)。

? ? ? ?在一個(gè)典型的B樹的應(yīng)用中,要處理的數(shù)據(jù)量很大,因此無法一次都裝入主存。B樹算法將所需的頁(“頁”這個(gè)概念需要計(jì)算機(jī)組成原理和操作系統(tǒng)的知識(shí))選擇出來復(fù)制到主存中去,而后將修改過的頁再寫回到磁盤中去。因?yàn)樵谌魏螘r(shí)刻,B樹算法在主存中都只需要一定量的頁數(shù),故主存的大小并不限制可被處理的B樹的大小。在B樹中,一個(gè)結(jié)點(diǎn)的大小通常相當(dāng)于一個(gè)完整的磁盤頁。

?

? ? ? 對(duì)存儲(chǔ)在磁盤上的一棵大的B樹,通常采用的分支因子為50到2000,具體要取決于關(guān)鍵字相對(duì)于一頁的大小 。選取一個(gè)大的分支因子,可以大大降低數(shù)的高度,以及尋找任意關(guān)鍵字時(shí)所需的磁盤存取次數(shù)。上圖顯示了一棵分支因子為1001、高度為2的B樹,它可以存儲(chǔ)超過10億個(gè)關(guān)鍵字;盡管如此,根節(jié)點(diǎn)還是可以持久的保留在內(nèi)存中,在這棵樹中尋找某一關(guān)鍵字至多需兩次磁盤存取! ? ??

維基百科:B樹

轉(zhuǎn)載于:https://www.cnblogs.com/sage-blog/p/3867777.html

總結(jié)

以上是生活随笔為你收集整理的DF学数据结构系列——B树(B-树和B+树)介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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