【数据结构学习笔记】_红黑树之节点插入(三)

来,继续,看红黑色的插入~

 

目录

第一点  你的名字

第二点  开始插入

 

第一点  你的名字

再次介绍下约定的出场演员名单:

          N:需要插入的节点

          P:N需要插入的位置的爸爸(父节点)

          U:N需要插入的位置的叔叔节点(P的姐妹节点)

          G:N需要插入的位置的爷爷(祖父节点)

 

N:还记得【数据结构学习笔记】_红黑树之基础知识(一)里面提到的“搜索二叉树的插入”吗?:

          1、如果是空树,则作为根节点;

          2、不是空树则从根节点搜索,

                1)值小于当前节点,该节点有左孩子,一直找下去,直到没有左孩子,插入的节点作为左孩子;

                2)值大于当前节点,该节点有右孩子,一直找下去,直到没有右孩子,插入的节点作为右孩子;

 

红黑树也遵循这个规则,然后做一些着色和旋转处理:

 

第二点  开始插入

 按上面分析的4大类(N的颜色+P的颜色+U的颜色)7种场景(Case7)来具体分析,插入节点后需要做的操作:


 Case1 ~~~情形:N(0010)就是根节点

          ~~~策略为:直接插入N,然后将N的颜色(新插入的节点都是红色)由红色变成黑色

  


 Case2 ~~~情形:N不是根节点,它需要插入位置的P是黑色

          ~~~策略为:直接插入N

 

 


 Case3 ~~~情形:N不是根节点,它需要插入位置的P是红色、叔叔U也是红色

          ~~~策略为:将P和U变成黑色,将G变成红色,作为新插入的节点一样的再次判断

 


 

 Case4 ~~~情形:1、N不是根节点,它需要插入位置的P是红色、叔叔U是黑色或者空节点

                           2、N和P和G在一条直线上、N是P的左孩子

          ~~~策略为:右旋G


 Case5 ~~~情形:1、N不是根节点,它需要插入位置的P是红色、叔叔U是黑色或者空节点

                           2、N和P和G在一条直线上、N是P的右孩子

          ~~~策略为:左旋G

 


 

 Case6 ~~~情形:1、N不是根节点,它需要插入位置的P是红色、叔叔U是黑色或者空节点

                           2、N和P和G不在一条直线上、N是P的左孩子

          ~~~策略为:N首先变成P的父节点,原来的P成为N的右孩子,然后再左旋新的P

 

 


 Case7 ~~~情形:1、N不是根节点,它需要插入位置的P是红色、叔叔U是黑色或者空节点

                           2、N和P和G不在一条直线上、N是P的右孩子

          ~~~策略为:N首先变成P的父节点,原来的P成为N的左孩子,然后再左旋新的P

 

 

转载于:https://www.cnblogs.com/zmhsoup/p/8066458.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值