B-Tree的性質(zhì)介紹
B-樹是一種常見的數(shù)據(jù)結(jié)構(gòu)。和他一起的還有B+樹。
在這里,需要澄清一下概念。B樹,B-樹,B+樹有什么區(qū)別?他們有什么關(guān)系呢?
其實,從數(shù)據(jù)結(jié)構(gòu)來講只有2種,也就是B-樹和B+樹。有時候,B-樹又稱為B樹,他們是一個東西。請注意,B-樹中間的“-”是連字符,而不是“減號”。英文中是B-Tree,翻譯成中文后,也就是B樹,有的翻譯喜歡把連字符“-”也帶著,于是就成了B-樹,而B-樹被有些讀者誤讀為B減樹。
介紹B-樹之前,首先看一下一個重要的概念:階。
一個樹的階,就是這個樹中各個節(jié)點的子節(jié)點個數(shù)的最大值。也就是說,如果有的節(jié)點有2個子節(jié)點,有的節(jié)點有4個子節(jié)點,最多的有5個子節(jié)點,那么,這個樹的階就是5.
從這個角度來講,二叉樹的階是2.
接下來,我們介紹一下B-樹的主要性質(zhì)。我們假定B-樹的階為m。一個m階的B-樹,要么是一個空樹,要么是具有如下性質(zhì)的樹:
1,每個節(jié)點最多有m個子節(jié)點。最少有m/2(向上取整)個節(jié)點。或者這么表述:m/2 <= 子節(jié)點個數(shù)<= m。但是根節(jié)點是例外的,根節(jié)點可以最少有2個子節(jié)點。
2,每個節(jié)點的子節(jié)點的個數(shù),比該節(jié)點中保存的關(guān)鍵字的個數(shù)多1. 也就是,當節(jié)點中保存k個關(guān)鍵字時,該節(jié)點會有k + 1個子節(jié)點(子樹)。
3,每個節(jié)點中的k個關(guān)鍵字是按照從小到到排列的,分別記為k1,k2,k3,......kk。那么該節(jié)點會有k+1個指針,記為p0,p1,p2,......pk。并且,p3所指向的子節(jié)點中的所有元素,都大于k3,且都小于k4. 如下圖所示。這一點也比較容易理解和記憶,各個指針p整好位于關(guān)鍵字k的插空的位置,所以,插空處的指針指向的子節(jié)點的元素的值,就理所當然的應(yīng)該大于指針左邊的元素,小于指針右邊的元素。
4,B-樹是嚴格的平衡查找樹,它的左右子樹的高度是相等的。且葉子節(jié)點處于同一層,并且可以用空節(jié)點表示。
一個B-樹的例子:
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
mysql ndb集群備份數(shù)據(jù)庫和還原數(shù)據(jù)庫的方法
中午剛剛弄明白了MYSQL集群的備份與恢復(fù)。寫下來,以后就不用為這個問題浪費時間了2011-12-12Mysql 刪除數(shù)據(jù)庫drop database詳細介紹
在mysql中,我們可以使用DROP DATABASE來刪除數(shù)據(jù)庫,并且數(shù)據(jù)庫中所有表也隨之刪除。本文通過實例向各位碼農(nóng)介紹DROP DATABASE的使用方法,需要的朋友可以參考下2016-11-11windows下mysql中binlog日志分析和數(shù)據(jù)恢復(fù)問題
這篇文章主要介紹了windows下mysql中binlog日志分析和數(shù)據(jù)恢復(fù)問題,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06MYSQL出現(xiàn)" Client does not support authentication "的
MYSQL出現(xiàn)" Client does not support authentication "的解決方法...2007-06-06