B 樹能夠看做是對2-3查找樹的一種擴展,即他容許每一個節點有M-1個子節點。緩存
下圖是一個M=4 階的B樹:動畫
能夠看到B樹是2-3樹的一種擴展,他容許一個節點有多於2個的元素。blog
B樹的插入及平衡化操做和2-3樹很類似,這裏就不介紹了。下面是往B樹中依次插入排序
6 10 4 14 5 11 15 3 2 12 1 7 8 8 6 3 6 21 5 15 15 6 32 23 45 65 7 8 6 5 4遞歸
的演示動畫:索引
B+樹是對B樹的一種變形樹,它與B樹的差別在於:內存
以下圖,是一個B+樹:get
下圖是B+樹的插入動畫:it
B和B+樹的區別在於,B+樹的非葉子結點只包含導航信息,不包含實際的值,全部的葉子結點和相連的節點使用鏈表相連,便於區間查找和遍歷。擴展
B+ 樹的優勢在於:
可是B樹也有優勢,其優勢在於,因爲B樹的每個節點都包含key和value,所以常常訪問的元素可能離根節點更近,所以訪問也更迅速。下面是B 樹和B+樹的區別圖: