直面弱點,奮發圖強!!!
複製代碼
紅黑樹、B樹、B+樹,都是軟件開發中一個比較難理解和掌握的知識點。他們的本質依然是平衡二叉搜索樹。若是直接去學習紅黑樹、B樹、B+樹的知識點,無異於霧裏看花。此次咱們從這些數據結構的底層邏輯設計出發,不牽扯任何代碼層面上的內容。javascript
二節點java
一個key和左右兩個連接;其中key大於左連接、小於右連接程序員
三節點markdown
包含兩個key和三個連接(兩個key分別稱爲key1和key2,key1小於key2)數據結構
一、二、3三個子連接(子連接1的key小於根結點key一、子連接2的key大於根結點key1且小於根結點key二、子連接3的key大於根結點key2)oop
四節點學習
包含三個key和四個子連接(三個key分別爲key一、key二、key3且從小到大排列)spa
一、二、三、4三個子連接(子連接1的key小於根結點key一、子連接2的key大於根結點key1且小於根結點key二、子連接3的key大於根結點key2且小於根結點key三、子連接4的key大於根結點key3)設計
上述的節點計數指子連接的數量,而非節點包含的key的數量3d
因爲二、三、4樹的查詢操做和二叉搜索樹的操做一致,再也不贅敘。本次主要完成插入和刪除的操做描述
能夠參考以前的文章,熟悉二叉樹一些基本定義和操做
咱們把1-10的數字拆入到一棵234樹中
依次插入一、二、3節點
插入4節點,須要將4節點分裂成3個2節點的操做
至此,插入邏輯介紹完畢
節點的刪除邏輯,和二叉樹的刪除邏輯區別不大。若是是葉子節點,能夠直接刪除;若是是非葉子節點,須要轉換爲後繼/前驅節點的刪除方式,全部均可以轉換爲極值的刪除
至此,咱們的234樹的插入和刪除操做介紹完了。搞清楚234樹的插入和刪除操做將是後續紅黑樹、B樹、B+樹的前置條件。
目前正在整理紅黑樹、B樹、B+樹的內容,敬請期待。同時也歡迎你們分享轉發!
系列
歡迎你們關注javascript藝術,留言分享和我交流!