B樹中全部節點的孩子節點數的最大值稱爲B樹的階,一般用m表示,m約束了每一個節點子樹的最大數量(定義),也約束了子樹的最少數量(m/2向上取整)。定義以下node
m
棵子樹(m-1個關鍵字)。n,P0,K1,P1,K2,...,Kn,Pn
.其中Ki
爲關鍵字,Pi
爲指向子樹根節點的指針。且Ki-1<Pi-1(表示所指向子樹的全部節點的關鍵字)<Ki
,B樹的每一個節點既存儲數據又存儲所用當m取256時,相比平衡BST的高度,BST在最壞狀況下樹高(IO次數)下降其1/7
,最好狀況下樹高下降1/8
。性能
與BST很相似,只是每一個節點都是多個關鍵字的有序表。B樹的查找包含兩個基本操操做:1.在B樹中找節點(磁盤IO操做);2.在節點內找關鍵字(在內存中)優化
B數的插入(定位+插入),因插入是使得節點的關鍵字數量增長,當個數在[m/2-2,m-1]外(b樹定義)時,必須對節點進行分裂,分裂的過程等價於在父節點中插入一個關鍵碼,因此,分裂過程可能一直進行到根節點。B樹長高的惟一方式:根節點出發生了上溢操做,此時分裂後,根的子樹僅爲2.ui
當直接刪除後知足B樹定義,則ok,不然,而後看兄弟夠借,爲了保證有序性,具體是經過三角借債的方式完成,最後纔是合併。指針
https://stackoverflow.com/questions/870218/what-are-the-differences-between-b-trees-and-b-treescode