多路查詢樹 B數 B 樹 B 樹 原理

2021-10-06 04:39:21 字數 2471 閱讀 6597

1)二叉樹需要載入到記憶體的,如果二叉樹的節點少,沒有什麼問題,但是如果二叉樹的節點很多(此如1億),就存在如下問題

2)問題1: 在構建二叉樹時,需要多次進行/o操作海量資料存在資料庫或檔案中)節點海量,構建二叉樹時,速度有影響

3)問題2: 節點海量,也會造成二叉樹的高度很大,會降低操作速度

1)在二叉樹中,每個節點有資料項,最多有兩個子節點。如果允許每個節點可以

有更多的資料項和更多的子節點,就是多叉樹(multiwaytree )

2)後面我們講解的2-3樹,2-3-4樹就是多叉樹,多叉樹通過重新組織節點,減少樹的高度,能對二叉樹進行優化。

3)舉例說明(下面2-3樹就是一顆多叉樹)

b樹通過重新組織節點,降低樹的高度,並且減少i/o讀寫次數來提公升效率。

1)如圖b樹通過重新組織節點,降低了樹的高度

2)檔案系統及資料庫系統的設計者利用了磁碟預讀原理,將-乙個節 點的大小設為等於-乙個頁(頁

得大小通常為4k),這樣每個節點只需要一次i/0就可以完全載入

3)將樹的度m設定為1024,在600億個元素中最多隻需要4次i/o操作就可以讀取到想要的元素, b

樹(b+)廣泛應用於檔案儲存系統以及資料庫系統中

2-3樹是最簡單的b樹結構,具有如下特點:

2-3樹的所有葉子節點都在同一層.(只要是b樹都滿足這個條件)

有兩個子節點的節點叫二節點,二節點要麼沒有子節點,要麼有兩個子節點.

有三個子節點的節點叫三節點,三節點要麼沒有子節點,要麼有三個子節點.

2-3樹是由二節點和三節點構成的樹。

演示說明

將數列構建成2-3樹,並保證資料插入的大小順序。(演示一下 構建2-3樹的過程.)

插入規則:

2-3樹的所有葉子節點都在同一層.(只要是b樹都滿足這個條件)

2.有兩個子 節點的節點叫二節點,二節點要麼沒有子節點,要麼有兩個子節點

3.有三 個子節點的節點叫三節點,三節點要麼沒有子節點,要麼有三個子節點

4.當按照規則插入-個數到某個節點時,不能滿足上面三個要求,就需要拆,先向上拆,如果上層滿,則拆本層,拆後仍然需要滿足上面3個條件。

5.對於三節點的子樹的值大小仍然遵守(bst二叉排序樹)的規則

除了23樹,還有234樹等,概念和23樹類似,也是一種b樹。

b樹的介紹

b-tree樹即b樹,b即balanced, 平衡的意思。有人把b-tree翻譯成b_樹,容易讓人產生誤解。會以為b-樹是一種樹,而b樹又是另一種樹。實際上,b-tree就是指的b樹。

b樹的說明:

b樹的階: 節點的最多子節點個數。比如2-3樹的階是3, 2-3-4樹 的階是4

2)b-樹的搜尋,從根結點開始,對結點內的關鍵字(有序)序列進行二分查詢,如果命中則結束,否則進a查詢關鍵字所屬範圍的兒子結點;重複,直到所對應的兒子指標為空,或已經是葉子結點

3)關鍵字集合分布在整顆樹中,即葉子節點和非葉子節點都存放資料.

4)搜尋有可能在非葉子結點結束

5)其搜尋效能等價於在關鍵字全集內做一次分查詢

b+樹是b樹的變體,也是一種多路搜尋樹。

b+樹的說明:

1.b+樹的搜尋與b樹也基本相同,區別是b+樹只有達到葉子結點才命中( b樹可以在非葉子結點命中),其效能也等價於在關鍵字全集做一次二分查詢

2.所有關鍵字都出現在葉子結點的鍊錶中(即資料只能在葉子節點[也叫稠密索引] ),且鍊錶中的關鍵字(資料)恰好是有序的。

3. 不可能在非葉子結點命中

4. 非葉子結點相當於是葉子結點的索引(稀疏索引),葉子結點相當於是儲存(關鍵字)資料的資料層

5.更適合檔案索引系統

6.b樹和b+樹各有自己的應用場景,不能說b+樹完全比b樹好,反之亦然.

b星樹(打出來的符號總被遮蔽)是b+樹的變體,在b+樹的非根和非葉子結點再增加指向兄弟的指標。

b星樹的說明:

1)b*樹定義了非葉子結點關鍵字個數至少為(2/3)*m,即塊的最低使用率為2/3,而b+樹的塊的最低使用率為b+樹的1/2。

2)從第1個特 點我們可以看出,b星樹分配新結點的概率比b+樹要低,空間使用率更高

多路查詢樹 B樹

多路查詢樹 multi way search tree 其每乙個結點的孩子數可以多於兩個,且每乙個結點處可以儲存多個元素。在這裡,我們講解它的4種特殊形式 2 3樹 2 3 4樹 b樹和b 樹。2 3樹是這樣的一顆多路查詢樹 其中的每乙個結點都具有兩個孩子 我們稱它為2結點 或三個孩子 我們稱它為3...

多路查詢樹 B樹

多路查詢樹,其每乙個結點的孩子數可以多於兩個,且每乙個結點處可以儲存多個元素。每乙個結點都具有兩個孩子 2結點 或三個孩子 3結點 乙個2結點包含乙個元素和兩個孩子 或沒有孩子 左子樹包含的元素小於該元素,右子樹包含的元素大於該元素。乙個3結點包含一小一大兩個元素和三個孩子 或沒有孩子 左子樹包含小...

多路查詢樹 B樹

多路查詢樹每乙個結點的孩子數可以多於兩個,且每乙個節點處可以儲存多個元素。2 3樹的每乙個結點都具有兩個孩子 2結點 或三個孩子 3結點 乙個2結點包含乙個元素和兩個孩子 或沒有孩子 且與二叉排序樹類似,左子樹包含的元素小於該元素,右子樹包含的元素大於該元素與二叉排序樹不同的是,這個2結點要麼沒有孩...