1樓:長腿哆啦c夢
一、關鍵字不同
1、b樹每乙個關鍵字有且只出現一次,且所有關鍵字按照從小到大的順序進行排列。
2、而b+樹有n棵子樹的非葉節點有n個關鍵字,關鍵字會儲存重複。非葉節點只儲存關鍵字,僅包含子樹的最大或者最小的關鍵字,只用來索引,關鍵字從小到大排列。
二、儲存內容不同
1、b樹每個節點除了儲存關鍵字,還儲存資料。
2、b+樹所有葉子節點儲存內容包含全部的關鍵字資訊,以及指向關鍵字記錄的指標。
三、查詢不同
1、b樹查詢相當於二分查詢,可以在非葉節點結束,且若經常訪問的元素離根節點較近,則訪問更加迅速。
2、而b+樹的查詢路徑是由根到葉子節點,每次查詢路徑長度比較穩定。
2樓:神降
一棵m階的b+樹和m階的b樹的異同點在於: 所有的葉子結點中包含了全部關鍵字的資訊,及指向含有這些關鍵字記錄的指標,且葉子結點本身依關鍵字的大小自小而大的順序鏈結。(而b 樹的葉子節點並沒有包括全部需要查詢的資訊) 所有的非終端結點可以看成是索引部分,結點中僅含有其子樹根結點中最大(或最小)關鍵字。
(而b 樹的非終節點也包含需要查詢的有效資訊)
b-樹和b+樹的區別是什麼?
3樓:景三四
b-樹是一種多路搜尋樹(並不是二叉的。),一顆m階的b-樹,或為空樹,或者定義任意非葉子結點最多只有m個兒子。
且m>2;根結點的兒子數為[2, m]。
除根結點以外的非葉子結點的兒子數為[m/2]。
每個結點存放至少m/2-1(取上整)和至多m-1個關鍵字;(至少2個關鍵字)非葉子結點的關鍵字個數=指向兒子的指標個數-1;
b+樹, b+樹是b-樹的變體,也是一種多路搜尋樹:其定義基本與b-樹同。
b-樹是一種 多路搜尋 樹(並不是二叉的。),一顆 m 階 的b-樹,或為空樹,或 者定 義任意非葉子結點最 多隻 有m 個兒子。
且m>2;根 結 點的兒 子 數 為 [2, m]。
除根結 點以 外的非葉子結點的兒子數為[m/2]。
每個結 點存放至 少m/2-1 (取上整) 和至 多 m- 1 個 關鍵 字;(至少2個關鍵字)非葉子結點的關 鍵 字個數 =指 向兒子 指標個數-1;
b+樹, b+樹是b-樹的變體, 也是一種多路搜尋樹:其定義基本與b-樹同。
簡述b-樹和b+樹的區別
資料結構中b樹、b+樹的區別
4樓:匿名使用者
這兩種處理索引的資料結構的不同之處:
1。b樹中同一鍵值不會出現多次,並且它有可能出現在葉結點,也有可能出現在非葉結點中。而b+樹的鍵一定會出現在葉結點中,並且有可能在非葉結點中也有可能重複出現,以維持b+樹的平衡。
2。因為b樹鍵位置不定,且在整個樹結構中只出現一次,雖然可以節省儲存空間,但使得在插入、刪除操作複雜度明顯增加。b+樹相比來說是一種較好的折中。
3。b樹的查詢效率與鍵在樹中的位置有關,最大時間複雜度與b+樹相同(在葉結點的時候),最小時間複雜度為1(在根結點的時候)。而b+樹的時候複雜度對某建成的樹是固定的。
b tree 和 b+ tree 的區別
5樓:匿名使用者
.b樹中同一鍵值不會出現多次,並且它有可能出現在葉結點,也有可能出現在非葉結點中。而b+樹的鍵一定會出現在葉結點中,並且有可能在非葉結點中也有可能重複出現,以維持b+樹的平衡。
2.因為b樹鍵位置不定,且在整個樹結構中只出現一次,
6樓:
兩款**很方便,。、交易貓
b-樹和b+樹的區別是什麼?
mysql innodb 索引到底是b+樹還是b樹
7樓:文成上學去了
先從資料結構的角度來答。
題主應該知道b-樹和b+樹最重要的乙個區別就是b+樹只有葉節點存放資料,其餘節點用來索引,而b-樹是每個索引節點都會有data域。
這就決定了b+樹更適合用來儲存外部資料,也就是所謂的磁碟資料。
從mysql(inoodb)的角度來看,b+樹是用來充當索引的,一般來說索引非常大,尤其是關係性資料庫這種資料量大的索引能達到億級別,所以為了減少記憶體的占用,索引也會被儲存在磁碟上。
那麼mysql如何衡量查詢效率呢?磁碟io次數,b-樹(b類樹)的特定就是每層節點數目非常多,層數很少,目的就是為了就少磁碟io次數,當查詢資料的時候,最好的情況就是很快找到目標索引,然後讀取資料,使用b+樹就能很好的完成這個目的,但是b-樹的每個節點都有data域(指標),這無疑增大了節點大小,說白了增加了磁碟io次數(磁碟io一次讀出的資料量大小是固定的,單個資料變大,每次讀出的就少,io次數增多,一次io多耗時啊!),而b+樹除了葉子節點其它節點並不儲存資料,節點小,磁碟io次數就少。
這是優點之一。
另乙個優點是什麼,b+樹所有的data域在葉子節點,一般來說都會進行乙個優化,就是將所有的葉子節點用指標串起來。這樣遍歷葉子節點就能獲得全部資料,這樣就能進行區間訪問啦。
至於mongodb為什麼使用b-樹而不是b+樹,可以從它的設計角度來考慮,它並不是傳統的關係性資料庫,而是以json格式作為儲存的nosql,目的就是高效能,高可用,易擴充套件。首先它擺脫了關係模型,上面所述的優點2需求就沒那麼強烈了,其次mysql由於使用b+樹,資料都在葉節點上,每次查詢都需要訪問到葉節點,而mongodb使用b-樹,所有節點都有data域,只要找到指定索引就可以進行訪問,無疑單次查詢平均快於mysql(但側面來看mysql至少平均查詢耗時差不多)。
總體來說,mysql選用b+樹和mongodb選用b-樹還是以自己的需求來選擇的。
b樹和二叉樹有什麼區別? 10
8樓:以下均為真話
b樹是多叉樹,二叉樹是二叉樹。
具體看網頁鏈結
B樹和B加樹的區別,再理解Oracle的B Tree Index
1.b樹中同一鍵值不抄會襲出現多次,並且它有可能出現在葉結點,也有可能出現在非葉結點中。而b 樹的鍵一定會出現在葉結點中,並且有可能在非葉結點中也有可能重複出現,以維持b 樹的平衡。2.因為b樹鍵位置不定,且在整個樹結構中只出現一次,雖然可以節省儲存空間,但使得在插入 刪除操作複雜度明顯增加。b 樹...
共享檔案系統為什麼採用B樹,而不是B樹
再補充說明一下1.b 樹佔空間小 空間 樹階數要比b 大 所有關鍵字都分布要葉子節點內上,其容他節點都是索引 查詢是要經過的路徑就多 運算時間相對長 2.b 樹佔空間大 空間 樹階數要比b 小 關鍵字分布到各個節點上,相對於集中分布到葉子節點,分散分布的階數自然要小 查詢要經過的路徑相對比較少 運算...
m階b樹是什麼意思
一棵m階b樹 balanced tree of order m 是一棵平衡的m路搜尋樹。它或者是空樹,或者是滿足下列性質的樹 1 根結點至少有兩個子女 2 每個非根節點所包含的關鍵字個數 j 滿足 m 2 1 j m 1 3 除根結點以外的所有結點 不包括葉子結點 的度數正好是關鍵字總數加1,故內部...