B 樹插入過程改進

2021-08-03 21:55:01 字數 1175 閱讀 1777

一棵m階的b+樹需滿足下列條件:

(1)每個分支節點最多有m棵子樹;

(2)非葉根節點至少有兩棵子樹,其他每個分支節點至少有m/2棵子樹;

(3)節點的子樹個數與關鍵字個數相等;

(4)所有葉節點包含包含全部關鍵字及指向相應記錄的指標,而且葉節點中將關鍵字按大小順序排列,並且相鄰葉節點按大小順序相互鏈結起來;

(5)所有分支節點中僅包括它的各個子節點中關鍵字的最大值及指向其子節點的指標。

在b+樹的插入過程中,由於每個節點的關鍵字個數有限制,所以會導致插入節點的關鍵字個數在超過階數時,該節點會**成兩個節點,同時為了滿足b+樹的性質,並會將節點中間的關鍵字複製乙份放到它的父節點中。處理**過程是b+樹插入過程的關鍵。

我在學習b+樹的過程中,發現了另外一種**方式可以大大減少操作,提高效能。

(1)通常b+樹的插入過程

我們通常意義上的b+樹的插入過程,就是首先通過節點路徑上的節點找到插入的目標葉子節點,如果使得葉子節點裡的關鍵字數大於階數,那麼變會**,同時上公升的關鍵字可能會導致它的父節點**,然後一直往上迭代,直到不能**為止,完成插入過程。

(2)改進b+樹插入過程

其實在我們上述的插入過程中有個回溯過程,然而我們完全可以避免這個過程。我們在插入時,我們的策略是,遇到乙個滿階的節點就將它**,而不考慮這個節點在這次插入過程是否會**,就相當於預先提前為它做了**。看個例子,以4階為例;

我們可以從上面的圖感覺到,相比之前的插入方式,改進的b+樹插入策略,避免了節點回溯查詢的工作量,在一定程度上會提高b+樹的插入效能。同時,我們在深入思考下,就會發現,採用這種方式的插入, 相當於另外一種概念的b+樹,乙個變種的b+樹,總結起來就是先**後插入,會給人帶來乙個感覺,當前的b+樹實際的階數比定義的階數小1,如乙個4階的b+樹相當於乙個三階的b+樹。

B 樹的插入過程介紹

上文我們介紹了b 樹的性質,本文我們來介紹一下b 樹的插入過程。插入過程和樹的構建過程本質是一致的,即都是進行插入www.cppcns.com操作,並對插入後的b 樹進行調整。我們設定b 樹的階為5。用關鍵字序列來構建一棵b程式設計客棧 樹。因為樹的階為5,那麼,每個節點最多有5個子節點,每個節點內...

B樹 (插入操作)

一顆m階的b樹滿足一下特性 一 樹中的每個結點至多有m顆子樹,至少有顆子樹。除根結點和葉子結點外 其中表示m 2向上取整。二 樹中的每個結點至少有個關鍵字,至多m 1個關鍵字。當結點的關鍵字個數滿時,那麼該結點就需要 如何 假設 p結點已經有m 1個關鍵字,當再插入乙個關鍵字後,其關鍵字個數為m,超...

B樹的插入

一 b樹的定義 1970年,r.bayer和e.m ccreight 提出了一種適合外查詢的樹,它是一種平衡的多叉樹,稱為b樹,有些地方寫的是b 樹,注意不要誤讀成 b減樹 1 b樹 b tree 是對2 3樹資料結構的擴充套件,又稱為多路平衡查詢樹,它的乙個節點可以擁有多於2個子節點的二叉查詢樹。...