b+樹是為磁碟或其他直接訪問輔助裝置而設計的一種平衡查詢樹,在b+樹中,所有記錄節點都是按鍵值的大小順序存放在同一層的葉節點中,各葉節點指標進行連線。
由於b+樹的資料都儲存在葉子結點中,分支結點均為索引,方便掃庫,只需要掃一遍葉子結點即可,但是b樹因為其分支結點同樣儲存著資料,我們要找到具體的資料,需要進行一次中序遍歷按序來掃,所以b+樹更加適合在區間查詢的情況,所以通常b+樹用於資料庫索引,而b樹則常用於檔案索引。
對比b樹和b+樹
區別有以下兩點
1、 b+樹中只有葉子節點會帶有指向資料記錄的指標(rowid),而b樹則所有節點都帶有,在內部節點出現的索引項不會再出現在葉子節點中。
b+樹中所有葉子節點都是通過指標連線在一起,而b樹不會。
可以看到b+樹後面是有順序的
b+樹的優點:
非葉子節點不會帶上rowid,這樣,乙個塊中可以容納更多的索引項,一是可以降低樹的高度。二是乙個內部節點可以定位更多的葉子節點。
葉子節點之間通過指標來連線,範圍掃瞄將十分簡單,而對於b樹來說,則需要在葉子節點和內部節點不停的往返移動
b樹的優點:
對於在內部節點的資料,可直接得到,不必根據葉子節點來定位。
接下來們來實現b+樹的插入刪除操作:
b+樹的插入操作
我們建乙個5階的樹
a)空樹
b)依次插入8,10,15
c)插入16
插入16後超過了關鍵字的個數限制,所以要進行**。在葉子結點**時,**出來的左結點2個記錄,右邊3個記錄,中間key成為索引結點中的key,**後當前結點指向了父結點(根結點)。
結果如下圖所示
當然我們還有另一種**方式,給左結點3個記錄,右結點2個記錄,此時索引結點中的key就變為15。
d)插入17
e)插入18,插入後如下圖所示
f)插入若干資料後
g)在上圖中插入7,結果如下圖所示
當前結點的關鍵字個數超過4,需要**。左結點2個記錄,右結點3個記錄。**後關鍵字7進入到父結點中,將當前結點的指標指向父結點,結果如下圖所示。
當前結點的關鍵字個數超過4,需要繼續**。左結點2個關鍵字,右結點2個關鍵字,關鍵字16進入到父結點中,將當前結點指向父結點,結果如下圖所示。
B樹 B 樹 B 樹 B 樹的區別
b樹 即二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比結點關鍵字小,就進...
B樹 B 樹 B 樹 B 樹的區別
即二叉查詢樹 二叉排序樹或二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比...
B樹,B 樹,B 樹,B 樹
小彰的部落格 b樹 即二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比結點...