B樹、B+樹、B-樹

一、多路查找樹(mutil-way search tree)定義spa

多路查找樹,其每個節點的孩子數能夠多於兩個,且每個節點處能夠存儲多個元素。指針

因爲它是查找樹,因此元素之間存在某種特定的排序關係。因爲多路查找樹的定義(特色):每一個節點能夠有多個孩子;每一個節點能夠存儲多個元素。全部它有不少特殊形式:2-3樹、2-3-4樹、B樹、B+樹、B-樹。排序

二、B樹(B-Tree即B-樹):B樹是一種平衡的多路查找樹,2-3樹和2-3-4樹都是B樹的特例。節點最大的孩子數目稱爲B樹的階(Order)。2-3樹是3階B樹,2-3-4樹是4階B樹。索引

m階B樹具備以下屬性:終端

  1. 若是根節點不是葉節點,則其至少有兩顆子樹。
  2. 全部葉子節點都位於同一層。
  3. 每一個非根的分支節點都至少有k-1個元素和k個孩子,其中ceil(m/2)<=k<=m。ceil(m/2)是m/2向上取整。每個葉子節點都至少有k-1個元素。
  4. 每一個非終端結點中包含有n個關鍵字信息: (n,A0,K1,A1,K2,A2,......,Kn,An)。其中:
           a)   Ki (i=1...n)爲關鍵字,且關鍵字按順序升序排序K(i-1)< Ki。 
           b)   Ai爲指向子樹根節點的指針,且指針A(i-1)指向子樹中全部結點的關鍵字均小於Ki,但都大於K(i-1)。 
           c)   關鍵字的個數n必須知足: [ceil(m / 2)-1]<= n <= m-1

三、B+樹:是應文件系統所需而產生的一種B-tree的變形樹。B+樹是B樹的一種變形,在B樹中,每個元素在樹中只出現一次,有可能在葉子節點上,也有可能在分支節點上。而在B+樹中,出如今分支節點中的元素會被看成它們在該分支節點位置的中序後繼者中再次出現(就是分支節點中的元素會在其對應的葉子節點末尾再次出現)。另外,每個葉子節點都會保存一個指向後一個葉子節點的指針。以下圖:im

一顆m階B+樹和m階B樹的差別:img

      1.n棵子樹的結點中含有n個關鍵字; (而B 樹n棵子樹有n-1個關鍵字)文件

      2.全部的葉子結點中包含了所有關鍵字的信息,及指向含有這些關鍵字記錄的指針,且葉子結點自己依關鍵字的大小自小而大的順序連接。 (而B 樹的葉子節點並無包括所有須要查找的信息)文件系統

      3.全部的非終端結點能夠當作是索引部分,結點中僅含有其子樹根結點中最大(或最小)關鍵字。 (而B 樹的非終節點也包含須要查找的有效信息)哈希表

 

B+樹的結構適合帶有範圍的查找,而哈希表不適合帶範圍的查找。

相關文章
相關標籤/搜索