上文https://www.jb51.net/article/154153.htm我們介紹了B-樹的性質(zhì),本文我們來介紹一下B-樹的插入過程。
插入過程和樹的構(gòu)建過程本質(zhì)是一致的,即都是進(jìn)行插入操作,并對插入后的B-樹進(jìn)行調(diào)整。
我們設(shè)定B-樹的階為5。用關(guān)鍵字序列{1,2,6,7,11,4,8,13,10,5,17,9,16,20,3,12,14,18,19,15}來構(gòu)建一棵B-樹。
因為樹的階為5,那么,每個節(jié)點(diǎn)最多有5個子節(jié)點(diǎn),每個節(jié)點(diǎn)內(nèi)的關(guān)鍵字個數(shù)為3~4個。
于是,第一步是插入1,2,6,7作為一個節(jié)點(diǎn)。
然后插入11,得到1,2,6,7,11. 因為節(jié)點(diǎn)個數(shù)超過4,所以需要對該節(jié)點(diǎn)進(jìn)行拆分。選取中間節(jié)點(diǎn)6,進(jìn)行提升,提升為父節(jié)點(diǎn),于是得到:
有一個規(guī)則是新插入的節(jié)點(diǎn)總是出現(xiàn)在葉子節(jié)點(diǎn)上,接著插入4,8,13,直接插入即可,得到
然后插入10. 得到
因為最右下的節(jié)點(diǎn)內(nèi)有5個元素,超過最大個數(shù)4了,所以需要進(jìn)行拆分,把中間節(jié)點(diǎn)10進(jìn)行提升,上升到和6一起,形成如下結(jié)構(gòu)。
然后插入5,17,9,16,得到如下
之后插入20,插入20后,最右下節(jié)點(diǎn)內(nèi)元素個數(shù)為5個,超過最大個數(shù)4個,所以,需要把16進(jìn)行提升,形成如下結(jié)構(gòu)
之后插入3、12、14、18、19,后,形成如下結(jié)構(gòu)。
然后插入15,會導(dǎo)致13提升到根節(jié)點(diǎn),這時,根節(jié)點(diǎn)會有5個節(jié)點(diǎn),那么,根節(jié)點(diǎn)中的10會再次進(jìn)行提升,形成如下結(jié)構(gòu)。
結(jié)束。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
您可能感興趣的文章:- B-Tree的性質(zhì)介紹
- MySQL Hash索引和B-Tree索引的區(qū)別
- SQLite中的B-Tree實現(xiàn)細(xì)節(jié)分析
- bitmap 索引和 B-tree 索引在使用中如何選擇
- 基于B-樹和B+樹的使用:數(shù)據(jù)搜索和數(shù)據(jù)庫索引的詳細(xì)介紹
- 淺談MySQL的B樹索引與索引優(yōu)化小結(jié)
- 完整B樹算法Java實現(xiàn)代碼
- c語言B樹深入理解
- B-樹的刪除過程介紹