B樹脐湾、B+樹

一:B樹概念

B樹也稱B-樹,英文名稱Balance Tree,所以它是一顆平衡樹叙淌,平衡因子為0秤掌,所有葉子節(jié)點(diǎn)位于同一層。同時(shí)是多路查找樹鹰霍。
特點(diǎn):
每個(gè)節(jié)點(diǎn)可以有多個(gè)數(shù)據(jù)元素闻鉴;
平衡樹(平衡因子為0,所有葉子節(jié)點(diǎn)都位于同一層)衅谷;
查找樹椒拗;
所有節(jié)點(diǎn)的孩子節(jié)點(diǎn)數(shù)(不是數(shù)據(jù)元素個(gè)數(shù))的最大值稱為B樹的階,一棵m階B樹稱為m叉樹获黔。
下面我們來看看B樹的定義。
每個(gè)節(jié)點(diǎn)都存有索引和數(shù)據(jù)在验,也就是對(duì)應(yīng)的key和value玷氏。索引是指向子節(jié)點(diǎn)的指針,數(shù)據(jù)是關(guān)鍵字腋舌;
每個(gè)節(jié)點(diǎn)最多有m-1個(gè)關(guān)鍵字(可以存有的鍵值對(duì))盏触,即每個(gè)節(jié)點(diǎn)至多含有m棵子樹;
若根節(jié)點(diǎn)不是終端節(jié)點(diǎn)块饺,則至少有兩棵子樹赞辩,即最少可以只有1個(gè)關(guān)鍵字;
除根節(jié)點(diǎn)外的所有非葉節(jié)點(diǎn)至少有上限值(m/2)棵子樹授艰,即上限值(m/2)-1個(gè)關(guān)鍵字辨嗽;
每個(gè)節(jié)點(diǎn)中的關(guān)鍵字都按照從小到大的順序排列,每個(gè)關(guān)鍵字的左子樹中的所有關(guān)鍵字都小于它淮腾,而右子樹中的所有關(guān)鍵字都大于它糟需。

所以屉佳,根節(jié)點(diǎn)的關(guān)鍵字?jǐn)?shù)量范圍:1 <= k <= m-1,除根節(jié)點(diǎn)外的所有非葉節(jié)點(diǎn)的關(guān)鍵字?jǐn)?shù)量范圍:上限值(m/2)-1 <= k <= m-1洲押。

B樹.png

二:B+樹概述

B+樹其實(shí)和B樹是非常相似的武花,我們首先看看相同點(diǎn)
根節(jié)點(diǎn)至少一個(gè)元素杈帐;
除根節(jié)點(diǎn)外的所有非葉節(jié)點(diǎn)元素范圍:上限值(m/2)-1 <= k <= m-1体箕。

不同點(diǎn)
B+樹有兩種類型的節(jié)點(diǎn):內(nèi)部節(jié)點(diǎn)(也稱索引節(jié)點(diǎn))和葉子節(jié)點(diǎn)挑童。內(nèi)部節(jié)點(diǎn)就是非葉子節(jié)點(diǎn)累铅,內(nèi)部節(jié)點(diǎn)不存儲(chǔ)數(shù)據(jù),只存儲(chǔ)索引炮沐,數(shù)據(jù)都存儲(chǔ)在葉子節(jié)點(diǎn)争群;
內(nèi)部節(jié)點(diǎn)中的key都按照從小到大的順序排列,對(duì)于內(nèi)部節(jié)點(diǎn)中的一個(gè)key大年,左樹中的所有key都小于它换薄,右子樹中的key都大于等于它。葉子節(jié)點(diǎn)中的記錄也按照key的大小排列翔试;
每個(gè)葉子節(jié)點(diǎn)都存有相鄰葉子節(jié)點(diǎn)的指針轻要,葉子節(jié)點(diǎn)本身依關(guān)鍵字的大小自小而大順序鏈接;
父節(jié)點(diǎn)存有右孩子的第一個(gè)元素的索引垦缅。

B+樹

三:B樹冲泥、B+樹、紅黑樹總結(jié)

B+樹相對(duì)于B樹壁涎、紅黑樹有一些自己的優(yōu)勢(shì)凡恍,可以歸結(jié)為下面幾點(diǎn)。
單一節(jié)點(diǎn)存儲(chǔ)的元素更多怔球,使得查詢的IO次數(shù)更少嚼酝,所以也就使得它更適合做為數(shù)據(jù)庫(kù)MySQL的底層數(shù)據(jù)結(jié)構(gòu)了;
紅黑樹等查找樹也可以用來實(shí)現(xiàn)索引竟坛,但是文件系統(tǒng)及數(shù)據(jù)庫(kù)系統(tǒng)普遍采用 B+樹 作為索引結(jié)構(gòu)闽巩,這是因?yàn)槭褂?B+ 樹訪問磁盤數(shù)據(jù)有更高的性能;
相比較于紅黑樹担汤,B+樹有更低的樹高涎跨,平衡樹的樹高 O(h)=O(logdN),其中 d 為每個(gè)節(jié)點(diǎn)的出度崭歧。紅黑樹的出度為 2隅很,而 B+ Tree 的出度一般都非常大,所以紅黑樹的樹高 h 很明顯比 B+ Tree 大非常多驾荣;
所有的查詢都要查找到葉子節(jié)點(diǎn)外构,查詢性能是穩(wěn)定的普泡,而B樹,每個(gè)節(jié)點(diǎn)都可以查找到數(shù)據(jù)审编,所以不穩(wěn)定撼班;
所有的葉子節(jié)點(diǎn)形成了一個(gè)有序鏈表,更加便于查找垒酬。因?yàn)?B+ Tree 的有序性砰嘁,所以除了用于查找,還可以用于排序和分組勘究。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末矮湘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子口糕,更是在濱河造成了極大的恐慌缅阳,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件景描,死亡現(xiàn)場(chǎng)離奇詭異十办,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)超棺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門向族,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人棠绘,你說我怎么就攤上這事件相。” “怎么了氧苍?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵夜矗,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我让虐,道長(zhǎng)侯养,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任澄干,我火速辦了婚禮,結(jié)果婚禮上柠傍,老公的妹妹穿的比我還像新娘麸俘。我一直安慰自己,他們只是感情好惧笛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布从媚。 她就那樣靜靜地躺著,像睡著了一般患整。 火紅的嫁衣襯著肌膚如雪拜效。 梳的紋絲不亂的頭發(fā)上喷众,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音紧憾,去河邊找鬼到千。 笑死,一個(gè)胖子當(dāng)著我的面吹牛赴穗,可吹牛的內(nèi)容都是我干的憔四。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼般眉,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼了赵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起甸赃,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤柿汛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后埠对,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體络断,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年鸠窗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了妓羊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡稍计,死狀恐怖躁绸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情臣嚣,我是刑警寧澤净刮,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站硅则,受9級(jí)特大地震影響淹父,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜怎虫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一暑认、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧大审,春花似錦蘸际、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春导坟,著一層夾襖步出監(jiān)牢的瞬間屿良,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工惫周, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尘惧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓闯两,卻偏偏與公主長(zhǎng)得像褥伴,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子漾狼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354