B和B+樹的的理解

一、B樹:

B樹

(1)、每個(gè)節(jié)點(diǎn)存儲(chǔ)多個(gè)元素
(2)、摒棄二叉樹結(jié)構(gòu),采用多叉樹
它是一種多路搜索樹,它的每個(gè)節(jié)點(diǎn)可以擁有多余兩個(gè)的孩子節(jié)點(diǎn),M路的B樹最多可以擁有M路孩子節(jié)點(diǎn)。這樣設(shè)計(jì)主要是為了降低它的高度。但也不能無限多路,那樣就成了一個(gè)一維數(shù)組了,一般用在文件索引的地方比較多。

那么為什么文件系統(tǒng)不用紅黑樹之類的呢?

如果用紅黑樹存儲(chǔ),增加或者減少文件時(shí)紅黑樹需要做旋轉(zhuǎn)之類的操作來保持平衡,那么就需要把所有節(jié)點(diǎn)都加載到內(nèi)存中,查找時(shí)也需要全部加載到內(nèi)存,所以不適合。然而用B樹的多路存儲(chǔ)就沒有這個(gè)壓力,并且查找的時(shí)候只需要一個(gè)節(jié)點(diǎn)一個(gè)節(jié)點(diǎn)的往下查找就可以了。

二、B+樹

B+樹

B+樹是在B樹的基礎(chǔ)上改造的,它的數(shù)據(jù)都在葉子節(jié)點(diǎn)上,同時(shí),葉子節(jié)點(diǎn)之間還加了指針形成鏈表。
B+樹在數(shù)據(jù)庫的索引中用得比較多,如果需要查詢多條數(shù)據(jù),B樹需要做局部的中序遍歷,可能要跨層訪問。而B+樹由于所有數(shù)據(jù)都在葉子結(jié)點(diǎn),不用跨層,同時(shí)由于有鏈表結(jié)構(gòu),只需要找到首尾,通過鏈表就能把所有數(shù)據(jù)取出來了。
這也是為什么沒有在數(shù)據(jù)庫中用hash的原因,查找一個(gè)數(shù)hash更快,但是多個(gè)數(shù)字的時(shí)候就沒有B+數(shù)快了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • B樹的定義 一棵m階的B樹滿足下列條件: 樹中每個(gè)結(jié)點(diǎn)至多有m個(gè)孩子。 除根結(jié)點(diǎn)和葉子結(jié)點(diǎn)外,其它每個(gè)結(jié)點(diǎn)至少有m...
    文檔隨手記閱讀 13,341評(píng)論 0 25
  • 一些概念 數(shù)據(jù)結(jié)構(gòu)就是研究數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)以及它們之間相互關(guān)系,并對(duì)這種結(jié)構(gòu)定義相應(yīng)的運(yùn)算,而且確保經(jīng)過這...
    Winterfell_Z閱讀 5,946評(píng)論 0 13
  • 關(guān)于數(shù)據(jù)結(jié)構(gòu)中樹結(jié)構(gòu)的相關(guān)分享 本文參考: 樹結(jié)構(gòu)參考文獻(xiàn) 一、傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu)中的樹結(jié)構(gòu) 樹結(jié)構(gòu)是一種非線性存儲(chǔ)結(jié)...
    ai_chen2050閱讀 3,857評(píng)論 0 3
  • 查找是在大量的信息中尋找一個(gè)特定的信息元素,在計(jì)算機(jī)應(yīng)用中,查找是常用的基本運(yùn)算,例如編譯程序中符號(hào)表的查找。本文...
    北方蜘蛛閱讀 2,933評(píng)論 1 4
  • “所謂的活著并不是單純的呼吸、心臟跳動(dòng),也不是有腦電波,而是在這個(gè)世界上留下痕跡。要能看見自己一路走過來的腳印...
    小羅同學(xué)閱讀 557評(píng)論 0 2