BTree特性
BTree又叫多路平衡查找樹,一顆m叉的BTree特性如下:
- 樹中每個節點最多包含m個孩子。
- 除根節點與葉子節點外,每個節點至少有[ceil(m/2)]個孩子。
- 若根節點不是葉子節點,則至少有兩個孩子。
- 所有的葉子節點都在同一層。
- 每個非葉子節點由n個key與n+1個指針組成,其中[ceil(m/2)-1] <= n <= m-1 。
BTree插入
以5叉BTree爲例,key的數量:公式推導[ceil(m/2)-1] <= n <= m-1。所以 2 <= n <=4。當n>4時,中間節點分裂到父節點,兩邊節點分裂。
1、以插入C N G A H E K Q M F W L T Z D P R X Y S爲例,前4個字母沒什麼好說的。
2、插入H,n>4,中間元素G字母向上分裂到新的節點。
3、插入E,K,Q不需要分裂。
4、插入M,中間元素M字母向上分裂到父節點G。
5、插入F,W,L,T不需要分裂。
6、插入Z,中間元素T向上分裂到父節點中。
7、插入D,中間元素D向上分裂到父節點中。然後插入P,R,X,Y不需要分裂。
8、最後插入S,NPQR節點n>5,中間節點Q向上分裂,但分裂後父節點DGMT的n>5,中間節點M向上分裂。需要注意的是,原BTree第三個子節點HKL會包含DG節點中。
到此,一個BTree的構建就完成了,怎麼樣?是不是很簡單。刪除操作比插入略微複雜,鑑於篇幅,不做敘述。