1.B-樹(就是B樹)
下面來具體介紹一下B-樹(Balance Tree),一個(gè)m階的B樹具有如下幾個(gè)特征:
1.根結(jié)點(diǎn)至少有兩個(gè)子女。
2.每個(gè)中間節(jié)點(diǎn)都包含k-1個(gè)元素和k個(gè)孩子,其中 m/2 <= k <= m
3.每一個(gè)葉子節(jié)點(diǎn)都包含k-1個(gè)元素,其中 m/2 <= k <= m
4.所有的葉子結(jié)點(diǎn)都位于同一層。
5.每個(gè)節(jié)點(diǎn)中的元素從小到大排列,節(jié)點(diǎn)當(dāng)中k-1個(gè)元素正好是k個(gè)孩子包含的元素的值域分劃。
1.1查找
- 單值查找:最好就是在根節(jié)點(diǎn),否則就是最下葉子節(jié)點(diǎn)。
- 范圍查找:查找下限,然后中序遍歷。
應(yīng)用
- MongoDB
2.B+樹
一個(gè)m階的B樹具有如下幾個(gè)特征:
1.根結(jié)點(diǎn)至少有兩個(gè)子女。
2.每個(gè)中間節(jié)點(diǎn)都包含k-1個(gè)元素和k個(gè)孩子,其中 m/2 <= k <= m
3.每一個(gè)葉子節(jié)點(diǎn)都包含k-1個(gè)元素,其中 m/2 <= k <= m
4.所有的葉子結(jié)點(diǎn)都位于同一層。
5.每個(gè)節(jié)點(diǎn)中的元素從小到大排列,節(jié)點(diǎn)當(dāng)中k-1個(gè)元素正好是k個(gè)孩子包含的元素的值域分劃。
2.1優(yōu)勢(shì)
B+樹的優(yōu)勢(shì):
1.單一節(jié)點(diǎn)存儲(chǔ)更多的元素,使得查詢的IO次數(shù)更少。
2.所有查詢都要查找到葉子節(jié)點(diǎn),查詢性能穩(wěn)定。
3.所有葉子節(jié)點(diǎn)形成有序鏈表,便于范圍查詢。