B-樹的刪除過程介紹
上文http://www.dbjr.com.cn/article/154157.htm我們介紹了B-樹的插入過程,本文我們來介紹B-樹的刪除過程。
在B-樹中刪除節(jié)點(diǎn)時(shí),可能會(huì)發(fā)生向兄弟節(jié)點(diǎn)借元素,和孩子節(jié)點(diǎn)交換元素,甚至節(jié)點(diǎn)合并的過程。
我們以下面的樹為基礎(chǔ),進(jìn)行刪除操作。
首先明確一下這個(gè)樹的定義。它是一個(gè)5階樹。所以,每個(gè)節(jié)點(diǎn)內(nèi)元素個(gè)數(shù)為2~4個(gè)。
我們依次刪除8、16、15、4這4個(gè)元素。
首先刪除8,因?yàn)閯h除8后,不破壞樹的性質(zhì),所以直接刪除即可。得到如下
然后刪除16,這導(dǎo)致該節(jié)點(diǎn)只剩下一個(gè)13節(jié)點(diǎn),不滿足節(jié)點(diǎn)內(nèi)元素個(gè)數(shù)為2~4個(gè)的要求了。所以需要調(diào)整。這里可以向孩子借節(jié)點(diǎn),把17提升上來即可,得到下圖。這里不能和兄弟節(jié)點(diǎn)借節(jié)點(diǎn),因?yàn)閺?,6節(jié)點(diǎn)中把6借走后,剩下的3也不滿要求了。另外,也不能把孩子中的15提升上來,那樣會(huì)導(dǎo)致剩下的14不滿足要求。
然后刪除15,刪除15后同樣需要調(diào)整。調(diào)整的方式是,18上升,17下降到原來15的位置,得到下圖。
然后刪除元素4,刪除4后該節(jié)點(diǎn)只剩下5,需要調(diào)整??墒撬男值芄?jié)點(diǎn)也都沒有多余的節(jié)點(diǎn)可借,所以需要進(jìn)行節(jié)點(diǎn)合并。節(jié)點(diǎn)合并時(shí),方式會(huì)有多種,我們選擇其中的一種即可。這里,我們選擇父節(jié)點(diǎn)中的3下沉,和1,2,以及5進(jìn)行合并,如下圖。
但這次調(diào)整,導(dǎo)致6不符合要求了。另外,6非根節(jié)點(diǎn),但只有2個(gè)孩子,也不符合要求。需要繼續(xù)調(diào)整。調(diào)整的方式是,將10下沉,和6,以及13,18合并為根節(jié)點(diǎn),如下圖。
結(jié)束。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
MySQL定時(shí)任務(wù)不能正常執(zhí)行的原因分析及解決方法
大家好,本篇文章主要講的是MySQL定時(shí)任務(wù)不能正常執(zhí)行的原因分析及解決方法,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12MySql8設(shè)置遠(yuǎn)程連接的實(shí)戰(zhàn)記錄
與SQL Server類似,MySQL在需要遠(yuǎn)程操縱其他電腦時(shí),也需要對(duì)其做遠(yuǎn)程連接的相應(yīng)設(shè)置,下面這篇文章主要給大家介紹了關(guān)于MySql8設(shè)置遠(yuǎn)程連接的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04mysql添加索引方法詳解(Navicat可視化加索引與sql語句加索引)
索引用來快速地尋找那些具有特定值的記錄,如果沒有索引,執(zhí)行查詢時(shí)MySQL必須從第一個(gè)記錄開始掃描整個(gè)表的所有記錄,直至找到符合要求的記錄,表里面的記錄數(shù)量越多,代價(jià)就越高,下面這篇文章主要給大家介紹了關(guān)于mysql添加索引的相關(guān)資料,需要的朋友可以參考下2022-11-11mysql 查詢數(shù)據(jù)庫響應(yīng)時(shí)長的方法示例
要查詢MySQL數(shù)據(jù)庫的響應(yīng)時(shí)長,通常我們需要測(cè)量查詢執(zhí)行的時(shí)間,本文主要介紹了mysql 查詢數(shù)據(jù)庫響應(yīng)時(shí)長的方法示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-06-06詳解Mysql取前一天、前一周、后一天等時(shí)間函數(shù)
本文給大家介紹Mysql取前一天、前一周、后一天等時(shí)間函數(shù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-11-11MySQL遷移KingbaseESV8R2的實(shí)現(xiàn)步驟
本文主要介紹了MySQL遷移KingbaseESV8R2的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02MySQL字符串轉(zhuǎn)數(shù)字的3種方式實(shí)例
這篇文章主要給大家介紹了關(guān)于MySQL字符串轉(zhuǎn)數(shù)字的3種方式,在使用mysql中經(jīng)常遇到要將字符串?dāng)?shù)字轉(zhuǎn)換成可計(jì)算數(shù)字,文中給出了詳細(xì)的代碼示例和圖文介紹,需要的朋友可以參考下2023-08-08