樹形索引(B 樹)

2021-08-09 11:17:59 字數 2353 閱讀 7835

一棵m階的

b+樹和m階的

b-樹的異同點在於:

1.有n棵子樹的結點中含有n 個關鍵字

,即每個關鍵碼對應一顆子樹

2.所有的終端結點中包含了全部關鍵字的資訊

,及指向含有這些關鍵字記錄的指標,且終端結點本身依關鍵字的大小自小而大的順序鏈結。

(而b- 樹

的葉子節點並沒有包括全部需要查詢的資訊

)3.所有的

非終端結點可以看成是索引部分,

結點中僅含有其子樹根結點中最大(或最小)關鍵字

。(而b- 樹

的非終節點也包含需要查詢的有效資訊

)4.所有外結點均不是空指標,而是作為指向關鍵碼所對應記錄在檔案中的位置指標。

由於在m階b+樹中,每個結點最多有m棵子樹,故,m階b+樹的結點所含關鍵碼的最大個數為m,而在m階b-樹的結點中所含關鍵碼的最大個數為m-1.m階b+樹的結點所含關鍵碼的個數n的最大值可為m。

(1)根

結點只有1個,

分支數量範圍[2,m]

。(2)除根以外的非葉子結點,每個結點包含

分支數範圍[[m/2],m]

,其中[m/2]表示取大於m/2的最小整數(向上取整)

(3)所有非葉子節點的

關鍵字數目等於它的分支數量

。(4) 所有葉子節點都在同一層,且關鍵字數目範圍是[[m/2],m],其中[m/2]表示取大於m/2的最小整數。

(5)所有非葉子節點的關鍵字可以看成是索引部分,這些索引等於其子樹(根結點)中的最大(或最小)關鍵字。例如乙個非葉子節點包含資訊: (n,a1,k1, a2,k2,……,an,k

n),其中ki為關鍵字,ai為指向子樹根結點的

指標,n表示關鍵字個數。即ai所指子樹中的關鍵字均小於或等於ki,而a

i+1所指的關鍵字均大於ki(i=1,2,……,n)。

(6)葉子節點包含全部關鍵字的資訊(非葉子節點只包含索引),且葉子結點中的所有關鍵字依照大小順序鏈結(所以

乙個b+樹通常有兩個頭指標,乙個是指向根節點的root,另乙個是指向最小關鍵字的sqt

b+樹查詢:

在b+樹上查詢時,若在非終端結點上有關鍵碼等於給定值,並不終止,而是繼續向下直到終端結點

。因此,

在b+樹上不管查詢成功與否,每次查詢都是走了一條從根節點到終端結點的路徑。

插入:b+樹

插入僅在終端節點上進行,當終端節點中關鍵碼個數大於m時要**成兩個結點

(插入後含m+1個關鍵碼):若m為奇數,則**所得兩個結點所含關鍵碼個數均為(m+1)/2;若m偶,則分為m/2和m/2+1個。它們雙親結點中應同時包含這兩個節點中的最大關鍵碼。

在深度大於1的b+樹上

插入乙個比根節點上最大關鍵碼還要大的關鍵碼時

,為不破壞b+樹特性:

將根至終端結點路徑上結點(不包括終端結點)中的原最大關鍵碼改為新插入的較大關鍵碼,而僅在終端結點中將新插入的較大關鍵碼加在原最大關鍵碼之後

,然後檢查終端結點是否滿足m階b+樹定義要求。若加入後,關鍵碼個數仍小於或等於m,則不需**結點,若加入後終端結點中關鍵碼個數為m+1,則對該終端結點進行**-提公升操作。

刪除:僅在終端結點進行

。當終端結點最大關鍵碼被刪,則在非終端結點中的值(即為該最大關鍵碼)可作為乙個「分界關鍵碼」存在。若為b+樹的組織嚴格,

可將次大關鍵碼提公升到其父結點代替原來的最大關鍵碼,進一步上傳直至根結點

。若因刪除,使結點中關鍵碼個數少於[m/2],進行合併操作。

b+樹特

適合範圍查詢

。一旦找到範圍中第乙個關鍵碼及記錄,就可在該終端結點或順著該終端結點往後的連線指標,根據範圍的上界值,快速找出所給範圍內的所有關鍵碼及記錄。

用途:b+ 樹通常

用於資料庫

和作業系統的檔案系統

中。ntfs, reiserfs, nss, xfs, jfs, refs 和bfs等檔案系統都在使用b+樹作為元資料索引。

b+ 樹的特點是能夠保持資料穩定有序,其插入與修改擁有較穩定的對數時間複雜度。b+ 樹元素自底向上插入。

b+樹主要用於

磁碟,拆分意味著磁碟的操作,應該在可能的情況下儘量減少頁的拆分。

樹形索引(B 樹查詢 插入 刪除)

b 樹上每個節點包含多個關鍵碼從小到大排序,是一種平衡的多路查詢樹。最底層節點稱為外節點或葉結點,一般可省略。除了外結點,b 樹上的節點還有終端結點 葉結點的上一層 和非終端結點 終端結點層以上的結點 一顆m階b 樹,或為空樹,或為滿足下列特性的m叉樹 1 樹中每個結點最多有m顆子樹 2 若根節點不...

索引之B樹 B 樹 B 樹 B 樹

原文索引之b樹 b 樹 b 樹 b 樹 b 樹即二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left 和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中...

B樹與B 樹索引

b 樹 資料庫結構使用樹的結構索引,從演算法邏輯上看,二叉查詢樹的查詢速度和比較次數都是最小的。資料庫的索引儲存在磁碟上,當資料量比較大的時候,索引的大小可能有幾個g 甚至更多。當我們利用索引查詢的時候,不可能把整個索引載入到記憶體,能做的只有逐一載入每乙個磁碟頁,磁碟頁對應索引樹的節點。當利用二叉...