B-樹的刪除過程介紹
上文http://chabaoo.cn/article/154157.htm我們介紹了B-樹的插入過程,本文我們來介紹B-樹的刪除過程。
在B-樹中刪除節(jié)點時,可能會發(fā)生向兄弟節(jié)點借元素,和孩子節(jié)點交換元素,甚至節(jié)點合并的過程。
我們以下面的樹為基礎,進行刪除操作。
首先明確一下這個樹的定義。它是一個5階樹。所以,每個節(jié)點內元素個數為2~4個。
我們依次刪除8、16、15、4這4個元素。
首先刪除8,因為刪除8后,不破壞樹的性質,所以直接刪除即可。得到如下
然后刪除16,這導致該節(jié)點只剩下一個13節(jié)點,不滿足節(jié)點內元素個數為2~4個的要求了。所以需要調整。這里可以向孩子借節(jié)點,把17提升上來即可,得到下圖。這里不能和兄弟節(jié)點借節(jié)點,因為從3,6節(jié)點中把6借走后,剩下的3也不滿要求了。另外,也不能把孩子中的15提升上來,那樣會導致剩下的14不滿足要求。
然后刪除15,刪除15后同樣需要調整。調整的方式是,18上升,17下降到原來15的位置,得到下圖。
然后刪除元素4,刪除4后該節(jié)點只剩下5,需要調整。可是它的兄弟節(jié)點也都沒有多余的節(jié)點可借,所以需要進行節(jié)點合并。節(jié)點合并時,方式會有多種,我們選擇其中的一種即可。這里,我們選擇父節(jié)點中的3下沉,和1,2,以及5進行合并,如下圖。
但這次調整,導致6不符合要求了。另外,6非根節(jié)點,但只有2個孩子,也不符合要求。需要繼續(xù)調整。調整的方式是,將10下沉,和6,以及13,18合并為根節(jié)點,如下圖。
結束。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
相關文章
MySQL定時任務不能正常執(zhí)行的原因分析及解決方法
大家好,本篇文章主要講的是MySQL定時任務不能正常執(zhí)行的原因分析及解決方法,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12mysql添加索引方法詳解(Navicat可視化加索引與sql語句加索引)
索引用來快速地尋找那些具有特定值的記錄,如果沒有索引,執(zhí)行查詢時MySQL必須從第一個記錄開始掃描整個表的所有記錄,直至找到符合要求的記錄,表里面的記錄數量越多,代價就越高,下面這篇文章主要給大家介紹了關于mysql添加索引的相關資料,需要的朋友可以參考下2022-11-11