算法與數據結構學習(45)-二叉樹和B樹

二叉樹的問題分析

在這裏插入圖片描述

  1. 二叉樹需要加載到內存的,如果二叉樹的節點少,沒有什麼問題,但是如果二叉樹的節點很多(比如1億), 就存在如下問題:
  2. 問題1:在構建二叉樹時,需要多次進行i/o操作(海量數據存在數據庫或文件中),節點海量,構建二叉樹時,速度有影響
  3. 問題2:節點海量,也會造成二叉樹的高度很大,會降低操作速度.

多叉樹

  1. 在二叉樹中,每個節點有數據項,最多有兩個子節點。如果允許每個節點可以有更多的數據項和更多的子節點,就是多叉樹(multiway tree)
  2. 後面我們講解的2-3樹,2-3-4樹就是多叉樹,多叉樹通過重新組織節點,減少樹的高度,能對二叉樹進行優化。
    舉例說明(下面2-3樹就是一顆多叉樹)
    在這裏插入圖片描述

B樹的基本介紹

B樹通過重新組織節點,降低樹的高度,並且減少i/o讀寫次數來提升效率。
在這裏插入圖片描述

  1. 如圖B樹通過重新組織節點, 降低了樹的高度.
  2. 文件系統及數據庫系統的設計者利用了磁盤預讀原理,將一個節點的大小設爲等於一個頁(頁得大小通常爲4k),這樣每個節點只需要一次I/O就可以完全載入
  3. 將樹的度M設置爲1024,在600億個元素中最多只需要4次I/O操作就可以讀取到想要的元素, B樹(B+)廣泛應用於文件存儲系統以及數據庫系統中

2-3樹基本介紹

  1. 2-3樹是最簡單的B樹結構, 具有如下特點:
  2. 2-3樹的所有葉子節點都在同一層.(只要是B樹都滿足這個條件)
  3. 有兩個子節點的節點叫二節點,二節點要麼沒有子節點,要麼有兩個子節點.
  4. 有三個子節點的節點叫三節點,三節點要麼沒有子節點,要麼有三個子節點.
    2-3樹是由二節點和三節點構成的樹。

2-3樹應用案例
將數列{16, 24, 12, 32, 14, 26, 34, 10, 8, 28, 38, 20} 構建成2-3樹,並保證數據插入的大小順序。(演示一下構建2-3樹的過程.)
在這裏插入圖片描述
插入規則:

  1. 2-3樹的所有葉子節點都在同一層.(只要是B樹都滿足這個條件)
  2. 有兩個子節點的節點叫二節點,二節點要麼沒有子節點,要麼有兩個子節點.
  3. 有三個子節點的節點叫三節點,三節點要麼沒有子節點,要麼有三個子節點
  4. 當按照規則插入一個數到某個節點時,不能滿足上面三個要求,就需要拆,先向上拆,如果上層滿,則拆本層,拆後仍然需要滿足上面3個條件。
  5. 對於三節點的子樹的值大小仍然遵守(BST 二叉排序樹)的規則
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章