1. 程式人生 > >查詢三 多路查詢樹(2-3樹,2-3-4樹,B樹、B+樹)

查詢三 多路查詢樹(2-3樹,2-3-4樹,B樹、B+樹)

應用場景:解決在硬碟中的大量資料中的查詢。因為大量資料儲存在硬碟中,不能一次全部載入到記憶體中,而每次查一個數據讀一次硬碟,讀取速度太慢,這時就需要使用一種資料結構一部分一部分讀入,這就是多路查詢樹的作用。

2-3樹

2結點:每個幾點包含一個元素和兩個孩子(或者沒有孩子)。其中左孩子小於該節點元素,右孩子大於該節點元素。
3結點:每個節點包含兩個元素和三個孩子(或者沒有孩子)。其中左孩子小於節點中較小元素,中孩子大於較小的小於較大的元素,右孩子大於較大的元素。
2-3樹:由2結點和3結點組成的樹,並且所有葉子節點都在同一層上

2-3-4樹

2-3樹的擴充套件,加入了4節點,包含小中大三個元素和四個孩子分佈在這三個元素劃分的四個空間範圍。

B樹

B樹就類似於2-3樹和2-3-4樹,節點最大孩子數目稱為B樹的階,B樹的每個節點比原來那些節點多了一個指示該節點元素個數的儲存空間。一般B樹的階數都很大。
優點:查詢時很方便,每個節點存放在對應硬碟的一個頁面,每次讀取一個節點和key值對比,然後判斷下一次該讀哪個節點。
缺點:當需要進行中序遍歷時,我們需要往返於每個節點之間(即中序遍歷左子孩子訪問完回到父節點,然後又訪問左孩子向右一個孩子),這樣就會造成多次硬碟訪問,降低速度。這是就需要使用B+樹

B+樹

解決元素遍歷的基本問題。
B+樹:打破了樹種每個元素只出現一次的原則,在每個葉子節點上增加儲存其他中間節點中的元素。即葉子幾點包含原來全部節點資訊,並且包含後繼的葉子節點的索引。

優點:特別適合有範圍的查詢。

資料庫使用的就是B+樹的查詢。