B 樹 B 樹 B 樹 B 樹的含義和區別

2021-06-21 12:44:53 字數 1640 閱讀 8473

b 樹、b- 樹、b+ 樹、b* 樹的含義和區別

2012-06-14 15:44:53

分類: oracle

一、b樹

1、b樹的定義

b樹是一種平衡的多分樹,通常我們說m階的b樹,它必須滿足如下條件:

(1)每個結點至多有m個子結點;

(2)除根結點和葉結點外,其它每個結點至少有 個子結點;

(3)若根結點不是葉子結點,則至少有兩個子結點;

(4)所有的葉結點在同一層;

(5)有k個子結點的非根結點恰好包含k-1個關鍵碼。

2、b樹的查詢

b樹上的查詢是乙個順指標查詢結點和在結點內的關鍵碼中查詢交叉進行的過程。從根結點開始,在結點包含的關鍵碼中查詢給定的關鍵碼,找到則查詢成功;否則確定給定關鍵碼可能在的子樹,重複上面的操作,直到查詢成功或者指標為空為止。

下圖顯示了在b樹中查詢關鍵碼21的過程。

3、b樹的插入

首先是在恰當的葉子結點中新增關鍵碼,如果該結點中關鍵碼不超過m-1個,則插入成功。否則要把這個結點**為兩個。並把中間的乙個關鍵碼拿出來插到結點的父結點裡去。父結點也可能是滿的,就需要再**,再往上插。最壞的情況,這個過程可能一直傳到根,如果需要**根,由於根是沒有父結點的,這時就建立乙個新的根結點。插入可能導致b樹朝著根的方向生長。

下圖顯示了在b樹中插入關鍵碼33的過程。

4、b樹的刪除

b樹中的刪除操作與插入操作類似,但要稍微複雜些。如果刪除的關鍵碼不在葉結點層,則先把此關鍵碼與它在b樹里的後繼對換位置,然後再刪除該關鍵碼。如果刪除的關鍵碼在葉結點層,則把它從它所在的結點裡去掉,這可能導致此結點所包含的關鍵碼的個數小於 -1。這種情況下,考察該結點的左或右兄弟,從兄弟結點移若干個關鍵碼到該結點中來(這也涉及到它們的父結點中的乙個關鍵碼要做相應變化),使兩個結點所含關鍵碼個數基本相同。只有在兄弟結點的關鍵碼個數也很少,剛好等於 -1時,這個移動不能進行。這種情況下,要把將刪除關鍵碼的結點,它的兄弟結點及它們的父結點中的乙個關鍵碼合併為乙個結點。

二、b+樹

1、b+樹的概念

b+樹是b樹的一種變形樹,它與b樹的差異在於:

有k個子結點的結點必然有k個關鍵碼;

非葉結點僅具有索引作用,跟記錄有關的資訊均存放在葉結點中。

2、b+樹的查詢

跟b樹的查詢類似,但是也有不同。由於跟記錄有關的資訊存放在葉結點中,查詢時若在上層已找到待查的關鍵碼,並不停止,而是繼續沿指標向下一直查到葉結點層的關鍵碼。此外,b+樹的所有葉結點構成乙個有序鍊錶,可以按照關鍵碼排序的次序遍歷全部記錄。上面兩種方式結合起來,使得b+樹非常適合範圍檢索。

3、b+樹的插入

b+樹的插入與b樹的插入過程類似。不同的是b+樹在葉結點上進行,如果葉結點中的關鍵碼個數超過m,就必須**成關鍵碼數目大致相同的兩個結點,並保證上層結點中有這兩個結點的最大關鍵碼。

4、b+樹的刪除

b+樹中的關鍵碼在葉結點層刪除後,其在上層的複本可以保留,作為乙個"分解關鍵碼"存在,如果因為刪除而造成結點中關鍵碼數小於 ,其處理過程與b樹的處理一樣。

不同於b樹只適合隨機檢索,b+樹同時支援隨機檢索和順序檢索,在實際中應用比較多。

------------------------另一說法-------------

b樹

B樹,B 樹和B 樹 B 樹的區別

之前一些概念混淆,現在更正一下。b樹 b tree樹即b樹,b即balanced,平衡的意思。因為b樹的原英文名稱為b tree,而國內很多人喜歡把b tree譯作b 樹,其實,這種直譯不好,容易產生誤解。如人們可能會以為b 樹是一種樹,而b樹又是一種樹。事實上,b tree就是指b樹。特此說明。先...

B樹 B 樹 B 樹 B 樹的區別

b樹 即二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比結點關鍵字小,就進...

B樹 B 樹 B 樹 B 樹的區別

即二叉查詢樹 二叉排序樹或二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比...