B-和B+樹的定義、性質特點、舉例說明

在學習B-、B+樹之前應先學習過二叉排序樹/二叉搜索樹/二叉查找樹!!!和平衡二叉樹

B-樹(B-Tree)的簡介
B-樹(B-Tree)是一種平衡的多路查找樹,它在文件系統中很有用。它適合在磁盤等直接存取設備上進行動態表查找,即外存設備。
一棵m階的B-樹,或者爲空樹,或爲滿足下列特性的m叉樹:
(1)樹中每個節點至多有m棵子樹(即至多有m-1個關鍵字);(由此性質看樹的階,看子樹的最多數量)
(2)除根結點外,其他節點至少有m/2個孩子結點(即至少有m/2-1=(m-1)/2個關鍵字);
(3)若根結點不是葉子結點,則根結點至少有兩個孩子結點/兩棵子樹;
(4)每個結點的結構:
在這裏插入圖片描述
其中,n爲該節點中的關鍵字個數,除根結點外,其他所有結點的n大於等於m/2-1,且小於等於m-1;ki(1≤i≤n)爲該結點的關鍵字且滿足ki<ki+1;pi(0≤i≤n)爲該結點的孩子結點指針且滿足pi(0≤i≤n-1)結點上的關鍵字大於等於ki且小於ki+1,pn節點上的關鍵字大於kn。
(5)所有葉子結點都在同一層上,即B-樹是所有結點的平衡因子均等於0的多路查找樹

B-樹的查找
B-樹的查找類似二叉排序樹的查找,所不同的是B-樹上的每個結點是多關鍵字的有序表,在到達某個結點時,先在有序表中查找,若找到,則查找成功;否則,到相應指針所指向的子樹中去查找,當到達葉子結點時,則說明樹中沒有對應的關鍵字,查找失敗。即在B-樹上的查找過程是一個沿着指針順序地尋找結點,然後在結點中查找關鍵字交替進行的過程。

B-樹的舉例說明
一棵五階的B-樹
①查找關鍵字84:比根結點a55大,所以往右邊,去到c結點,比69大,往右,比78大,去到i結點,比79大,往右,等於84,查找成功。
②查找關鍵字38:比根結點a55小,所以往左邊,去到b結點,比10大,往右,比28大,去到f結點,比33大,往右,比40小,得知介於(33,40)之間,由於A2是葉子結點,所以查找失敗。

B+樹的簡介
索引順序文件組織的一個最大缺點是隨着文件的增大,索引查找性能和順序掃描性能都會下降。B+樹(B+ Tree)採用平衡樹結構,其中每個葉子結點到根的路徑長度相同,每個非葉子結點有 m/2向下取整~m 個孩子結點,其中m爲B+樹的階數。
結點結構:
在這裏插入圖片描述
B-和B+樹的區別/B+樹的特點
B+樹是應文件系統所需而產生的一種B-樹的變形樹。一棵m階的B+樹和m階的B-樹的差異在於:
(1) 有n棵子樹的結點中含有n個關鍵字;
(2) 所有的葉子結點中包含了全部關鍵字的信息,及指向含有這些關鍵字記錄的指針,且葉子結點本身依關鍵字的大小自小而大的順序鏈接;
(3) 所有的非終端結點可以看成是索引部分,結點中僅含有其子樹根結點中最大(或最小)關鍵字。
B+樹結構示意圖
一棵5階B+樹
B+樹的查找
在B+樹上進行隨機查找、插入和刪除的過程基本上與B-樹類似。只是**在查找時稍微有些區別:在查找過程中,當某個非終端結點上的關鍵字等於給定值時,B-樹立即終止查找過程並返回成功;而在B+樹中繼續向下查找直到葉子結點。**因此,在B+樹,不管查找成功與否,每次查找都是走了一條從根到葉子結點的路徑。

B+樹查找的分析類似於B-樹。B+樹的插入僅在葉子結點上進行。當結點中的關鍵字個數大於m時,該結點要分裂成兩個結點,它們所含關鍵字的個數分別爲 (m+1)/2 向下取整和(m+1)/2 向上取整 .並且它們的雙親結點中應同時包含這兩個結點的最大關鍵字。B+樹的刪除也僅在葉子結點進行,當葉子結點中的最大關鍵字被刪除時,其在非終端結點中的值可以作爲一個「分界關鍵字」存在。若因刪除而使結點中關鍵字的個數少於m/2向上取整時,其和兄弟結點的合併過程亦和B-樹類似

B+樹的舉例說明
一棵5階B+樹 通常在B+樹有兩個頭指針,一個指向根結點,一個指向關鍵字最小的葉子結點。所以可以對B+樹進行兩種查找運算:一種是從最小關鍵字開始的順序查找,另一種是根結點開始的隨機查找。