B-樹(shù)的插入過(guò)程介紹
上文http://chabaoo.cn/article/154153.htm我們介紹了B-樹(shù)的性質(zhì),本文我們來(lái)介紹一下B-樹(shù)的插入過(guò)程。
插入過(guò)程和樹(shù)的構(gòu)建過(guò)程本質(zhì)是一致的,即都是進(jìn)行插入操作,并對(duì)插入后的B-樹(shù)進(jìn)行調(diào)整。
我們?cè)O(shè)定B-樹(shù)的階為5。用關(guān)鍵字序列{1,2,6,7,11,4,8,13,10,5,17,9,16,20,3,12,14,18,19,15}來(lái)構(gòu)建一棵B-樹(shù)。
因?yàn)闃?shù)的階為5,那么,每個(gè)節(jié)點(diǎn)最多有5個(gè)子節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)內(nèi)的關(guān)鍵字個(gè)數(shù)為3~4個(gè)。
于是,第一步是插入1,2,6,7作為一個(gè)節(jié)點(diǎn)。
然后插入11,得到1,2,6,7,11. 因?yàn)楣?jié)點(diǎn)個(gè)數(shù)超過(guò)4,所以需要對(duì)該節(jié)點(diǎn)進(jìn)行拆分。選取中間節(jié)點(diǎn)6,進(jìn)行提升,提升為父節(jié)點(diǎn),于是得到:
有一個(gè)規(guī)則是新插入的節(jié)點(diǎn)總是出現(xiàn)在葉子節(jié)點(diǎn)上,接著插入4,8,13,直接插入即可,得到
然后插入10. 得到
因?yàn)樽钣蚁碌墓?jié)點(diǎn)內(nèi)有5個(gè)元素,超過(guò)最大個(gè)數(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)元素個(gè)數(shù)為5個(gè),超過(guò)最大個(gè)數(shù)4個(gè),所以,需要把16進(jìn)行提升,形成如下結(jié)構(gòu)
之后插入3、12、14、18、19,后,形成如下結(jié)構(gòu)。
然后插入15,會(huì)導(dǎo)致13提升到根節(jié)點(diǎn),這時(shí),根節(jié)點(diǎn)會(huì)有5個(gè)節(jié)點(diǎn),那么,根節(jié)點(diǎn)中的10會(huì)再次進(jìn)行提升,形成如下結(jié)構(gòu)。
結(jié)束。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
實(shí)操M(fèi)ySQL+PostgreSQL批量插入更新insertOrUpdate
這篇文章主要介紹了MYsql和PostgreSQL優(yōu)勢(shì)對(duì)比以及如何實(shí)現(xiàn)MySQL + PostgreSQL批量插入更新insertOrUpdate,附含詳細(xì)的InserOrupdate代碼實(shí)例,需要的朋友可以參考下2021-08-08MySQL數(shù)據(jù)庫(kù)刪除數(shù)據(jù)后自增ID不連續(xù)的問(wèn)題及解決
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)刪除數(shù)據(jù)后自增ID不連續(xù)的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06分析MySQL中索引引引發(fā)的CPU負(fù)載飆升的問(wèn)題
這篇文章主要介紹了分析MySQL中索引引引發(fā)的CPU負(fù)載飆升的問(wèn)題,文中提到了獨(dú)立索引所帶來(lái)的巨大CPU負(fù)擔(dān),以提醒在MySQL中使用索引要注意CPU負(fù)載的問(wèn)題,需要的朋友可以參考下2015-05-05Mysql行與列的多種轉(zhuǎn)換(行轉(zhuǎn)列,列轉(zhuǎn)行,多列轉(zhuǎn)一行,一行轉(zhuǎn)多列)
在MySQL中,行轉(zhuǎn)列和列轉(zhuǎn)行都是非常有用的操作,本文就來(lái)介紹一下Mysql行與列的多種轉(zhuǎn)換,主要包括行轉(zhuǎn)列,列轉(zhuǎn)行,多列轉(zhuǎn)一行,一行轉(zhuǎn)多列,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08MySQL查詢(xún)?nèi)哂嗨饕臀词褂眠^(guò)的索引操作
這篇文章主要介紹了MySQL查詢(xún)?nèi)哂嗨饕臀词褂眠^(guò)的索引操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03windows10下同時(shí)安裝兩個(gè)mysql服務(wù)的方法步驟
我的電腦已經(jīng)安裝了8.0.18,現(xiàn)在再安裝個(gè)8.0.25,本文主要介紹了windows10下同時(shí)安裝兩個(gè)mysql服務(wù)的方法步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09詳解如何避免MYSQL主從延遲帶來(lái)的讀寫(xiě)問(wèn)題
當(dāng)在主庫(kù)上進(jìn)行更新后,有可能數(shù)據(jù)還沒(méi)來(lái)得及同步到從庫(kù),但是這個(gè)時(shí)候又有讀數(shù)據(jù)的需求,為了能正確讀取出數(shù)據(jù),這個(gè)時(shí)候就只有讀主庫(kù)了,所以本文給大家介紹了如何避免MYSQL主從延遲帶來(lái)的讀寫(xiě)問(wèn)題,需要的朋友可以參考下2024-03-03