1. 程式人生 > >B樹(B-tree, 平衡的多路查詢樹)的相關知識

B樹(B-tree, 平衡的多路查詢樹)的相關知識

目錄

多路搜尋樹

B樹

B+樹:


多路搜尋樹

首先,介紹一下2-3樹,指的是其中每一個節點2結點--有兩個孩子或者3結點--三個孩子或者沒有孩子,2節點指的是該節點有一個元素和兩個孩子OR沒有孩子,3節點指的是該節點有兩個元素(一大一小)和三個孩子OR沒有孩子。

特點是所有葉子節點都在同一層,插入和刪除節點都必須保證順序和性質不變。左子樹小於根節點元素小於中子樹小於右根節點元素小於左子樹。

2-3-4樹和2-3樹差不多。

B樹

B樹的結構是一種平衡的多路查詢樹:節點數最大的孩子數目稱為B樹的階(order);

B樹的屬性:

  • 如果根節點不是葉子節點,則至少有兩棵字數;
  • 每一個非根的分支節點都有k-1個元素和k個孩子,其中\dagger m/2 \dagger\leq k\leq m ,每一個葉子結點都有k個元素,其中\dagger m/2 \dagger\leq k\leq m
  • 所有的葉子節點都位於同一層次
  • 分支節點資訊包括(n,A_{0},K_{1},A_{1},K_{2},A_{2},K_{3}......A_{n-1},K_{n},A_{n}),其中有順序。

B樹的結構就是為內外存的資料交換準備的。

B樹最壞的搜尋情況:第一層有一個節點,第二層有兩個,除去根節點,其餘層每個節點至少有\dagger m/2 \dagger棵子樹,則第三層有2*\dagger m/2 \dagger,若m階有n+1個關鍵字,即n+1 \leqslant 2*(\dagger m/2 \dagger)^{k-1},即k\leqslant log_{\dagger m/2 \dagger}(\frac{n+1}{2})+1

B+樹:

B+樹結構適合帶有範圍的查詢。

B+樹是應檔案系統所需而出的一種B樹的變形樹,在B+ 樹中,出現在分支結點中的元素,會被當作他們在該分支結點位置的中序後繼者(葉子結點)中再次出現。另外,每一個葉子節點都會儲存一個指向後一葉子結點的指標。

B+樹和B樹之間的差異在於:

  • 有n棵子樹的結點中包含有n個關鍵字
  • 所有的葉子結點包含全部關鍵字資訊,及指向含這些關鍵字記錄的指標,葉子節點本身依關鍵字的大小自小而大順序連線
  • 所有分支結點可以看成索引,結點中僅含有其子樹中的最大(最小)關鍵字。