https://blog.csdn.net/weichi7549/article/details/107333942/
B樹:
一個M階B樹的特征:
B樹非葉子節(jié)點最多只有M個兒子
根節(jié)點兒子數(shù)為[2,M)
除根節(jié)點外非葉子節(jié)點的兒子數(shù)為[M/2,M](向上取整)
非葉子節(jié)點的關(guān)鍵字個數(shù)=兒子數(shù)-1
葉子節(jié)點位于同一層
K個關(guān)鍵字把節(jié)點拆成K+1段剖踊,分別指向K+1個兒子庶弃,同時滿足查找樹的大小關(guān)系
B樹查找特征(與B+樹對比):
1.關(guān)鍵字集合分布在整顆樹中;
2.任何一個關(guān)鍵字出現(xiàn)且只出現(xiàn)在一個結(jié)點中德澈;
3.搜索有可能在非葉子結(jié)點結(jié)束歇攻;
4.其搜索性能等價于在關(guān)鍵字全集內(nèi)做一次二分查找;
B+樹:
有n棵子樹的非葉子結(jié)點中含有n個關(guān)鍵字(b樹是n-1個)梆造,這些關(guān)鍵字不保存數(shù)據(jù)缴守,只用來索引,所有數(shù)據(jù)都保存在葉子節(jié)點(b樹是每個關(guān)鍵字都保存數(shù)據(jù))镇辉。
所有的葉子結(jié)點中包含了全部關(guān)鍵字的信息屡穗,及指向含這些關(guān)鍵字記錄的指針,且葉子結(jié)點本身依關(guān)鍵字的大小自小而大順序鏈接忽肛。
所有的非葉子結(jié)點可以看成是索引部分村砂,結(jié)點中僅含其子樹中的最大(或最小)關(guān)鍵字屹逛。
通常在b+樹上有兩個頭指針箍镜,一個指向根結(jié)點,一個指向關(guān)鍵字最小的葉子結(jié)點煎源。
同一個數(shù)字會在不同節(jié)點中重復出現(xiàn)色迂,根節(jié)點的最大元素就是b+樹的最大元素。
B+樹查找特征(與B樹相比):
b+樹的中間節(jié)點不保存數(shù)據(jù)手销,所以磁盤頁能容納更多節(jié)點元素歇僧,更“矮胖”;
b+樹查詢必須查找到葉子節(jié)點锋拖,b樹只要匹配到即可不用管元素位置诈悍,因此b+樹查找更穩(wěn)定(并不慢);
對于范圍查找來說兽埃,b+樹只需遍歷葉子節(jié)點鏈表即可侥钳,b樹卻需要重復地中序遍歷