通过2-3树来理解红黑树的插入

红黑树理论知识 https://biscuitos.github.io/blog/Tree_RBTree/

2-3树理论知识和红黑树关系的分析 https://biscuitos.github.io/blog/Tree_2-3-tree/#RB23


    本文在将以2-3树的理论来讲解红黑树的插入操作。在2-3树向红黑树转化时有一个理论是红链接只会在左侧,但是在红黑树中形成一个相当于2-3树中的四节点,此时会出现后连接在右侧的情况。疑问:为什么理论中说红链接只会出现在左侧。

2-3树和红黑树插入演示 7,8,9,10,11,12

插入7                                                                                    节点以红色节点进行插入,插入7时由于是根节点所以需要变成黑色的节点

\begin{bmatrix} &7& \end{bmatrix}                                                                                                                                               \begin{bmatrix} 7 \end{bmatrix}                      

插入8,与7的节点融合生成一个三节点                                 插入8时8>7将所以直接将共色节点8插入到7的右侧  ,形成一个三节点,三节                                                                                               点在红黑树中使用红色节点表示                       

\begin{bmatrix} &7| &8 \end{bmatrix}                                                                                                                                           \begin{bmatrix} 7 \end{bmatrix}

插入9                                                                                                                                                    {\color{Red} \begin{bmatrix} 8 \end{bmatrix}}

\begin{bmatrix} 7&|8|&9 \end{bmatrix}                                                                              随后插入红色节点9,相当与在2-3树中形成一个四节点,也就是旋转变色。此                                                                                        时就出现了上述的疑问

这时由于三节点变成了四节点,会将四                                    \begin{bmatrix} &7& \end{bmatrix}                  \rightarrow          \begin{bmatrix} &8& \end{bmatrix}           \rightarrow                \begin{bmatrix} &8& \end{bmatrix}

节点分解后向上与父节点融合,由于是                                        {\color{Red} \begin{bmatrix}& 8& \end{bmatrix}}                     \begin{bmatrix} &7& \end{bmatrix}    \begin{bmatrix} &9& \end{bmatrix}                 {\color{Red} \begin{bmatrix}& 7& \end{bmatrix}}   {\color{Red} \begin{bmatrix}& 9& \end{bmatrix}}

根节点所以分出的节点充当根节点,其                                             {\color{Red} \begin{bmatrix}& 9 &\end{bmatrix}}

他两个元素充当子节点如下                                                     当这个子树时只有三个元素的时候,这个四节点被认为两个三节点所以左右                                                                                              两个节点为红色,当这个子树元素大于三个的时候就需要被当成三个二节点进   

            \begin{bmatrix} &8& \end{bmatrix}                                                                   行插入比如插入10时,二节点需要染成黑色

\begin{bmatrix} &7& \end{bmatrix}              \begin{bmatrix} &9& \end{bmatrix}                                                                        \begin{bmatrix} &8& \end{bmatrix}

插入10时与9的节点相融合形成一个三节点                                 \begin{bmatrix} &7& \end{bmatrix}    \begin{bmatrix} &9& \end{bmatrix}                       

           \begin{bmatrix} &8& \end{bmatrix}                                                                                                    {\color{Red} \begin{bmatrix}& 10& \end{bmatrix}}

\begin{bmatrix} &7& \end{bmatrix}           \begin{bmatrix} &9| &10 \end{bmatrix}                                                    当插入元素11时,9,10,11节点再次形成四节点,于是重复插入9时的操作

插入11后由于与9和10的节点融合后形成                                                       \begin{bmatrix} &8& \end{bmatrix}

一个四节点,这时又会发生分解后向上                                                \begin{bmatrix} &7& \end{bmatrix}         \begin{bmatrix} &10& \end{bmatrix}

融合的一个过程                                                                                                  {\color{Red} \begin{bmatrix}& 9& \end{bmatrix}}   {\color{Red} \begin{bmatrix}& 11& \end{bmatrix}}

         \begin{bmatrix} &8& \end{bmatrix}                        \rightarrow           \begin{bmatrix} &8& \end{bmatrix}                       

\begin{bmatrix} &7& \end{bmatrix}      \begin{bmatrix} 9&|10|&11 \end{bmatrix}            \begin{bmatrix} &7& \end{bmatrix}        \begin{bmatrix} &10& \end{bmatrix}               

                                                                 \begin{bmatrix} &9& \end{bmatrix}   \begin{bmatrix} &11& \end{bmatrix}              

\rightarrow       \begin{bmatrix} &8| &10 \end{bmatrix}          

\begin{bmatrix} &7& \end{bmatrix}   \begin{bmatrix} &9& \end{bmatrix}  \begin{bmatrix} &11& \end{bmatrix}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值