B 樹的研究

2021-08-26 23:20:27 字數 1748 閱讀 5055

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樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比結點...