一、簡介
B+樹是常用於數據庫和操作系統的文件系統中的一種用於查找的數據結構.B+樹的特點是能夠保持數據穩定有序,其插入與修改擁有較穩定的對數時間複雜度。B+樹元素自底向上插入,這與二叉樹恰好相反。
二、定義
B+樹是B樹的一種變形形式,B+樹上的葉子結點存儲關鍵字以及相應記錄的地址,葉子結點以上各層作爲索引使用。一棵m階的B+樹定義如下:
- 每個結點至多有m個子結點;
- 除根結點外,每個結點至少有[m/2]個子結點,根結點至少有2個子結點;
- 有k個子結點的結點必有k個關鍵字。
B+樹的查找與B樹不同,當索引部分某個結點的關鍵字與所查的關鍵字相等時,並不停止查找,應繼續沿着這個關鍵字的指針向下,一直查到該關鍵字所在的葉子結點爲止。
三、與B樹的比較
1.結點結構
葉子結點:
B樹結點的是“null”結點,不存儲任何數據。
B+樹結點的是“數據節點”,專門用來存儲數據。
非葉子結點:
B樹結點的是“指針包着key”的結構(每個key的左右兩邊均有指針)
B+樹結點的是“指針馱着key”的結構(每個key都騎在指針的頭上)
2.數據的存儲
B樹的數據存儲在非葉結點上,而葉子結點是不存儲數據的。
B+樹的數據存儲在葉子結點上,而葉非葉子結點是不存儲數據的。
綠色部分表示存儲數據,灰色部分表示不存儲數據,
3.葉子結點之間的關係
B樹:葉子結點之間沒有關係。
B+樹:所有葉子結點構成一條鏈表,每個節點就是該鏈表中的一個節點。
4.結點的插入與刪除
這裏有一個詳細的教程:http://data.biancheng.net/view/61.html