如何构建成一个红黑树

一:红黑树的五点特质:

1、每个节点都只能是红色或者黑色

2、根节点是黑色

3、每个叶节点(NIL节点,空节点)是黑色的。

4、如果一个结点是红的,则它两个子节点都是黑的。也就是说在一条路径上不能出现相邻的两个红色结点。

5、从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。

二:以下五种情况涵盖了绝大部分(杠精绕行)的新增可能,不管这棵红黑树多么复杂,都可以根据这五种情况来进行生成:

1:若新插入的节点N没有父节点,则直接当做根据节点插入即可,同时将颜色设置为黑色。

2:父节点为黑色(C),并且新增节点(A)为父节点的左子节点,可以直接插入,也不会打乱红色树的五大特质。

 

3若父节点A和叔父节点B都是红色,父节点的父节点C是黑色,这样就不能直接插入了,设置节点A和B为黑色,设置节点C为红色,这样满足条件,但是C节点的父节点或许也是红色,这样以C节点为新增节点,向上进行调整。

4:这种情况多数是由情况三变色,向上调整所出现情况。新增节点为父节点A的左子节点,并且都为红色,新增节点的父节点的父节点C为黑色,叔叔节点B为黑色或者NIL。这样以节点C为中心进行右单旋并着色。相反进行左单旋并着色。

5:这种情况多数是由情况三变色,向上调整所出现情况。新增节点为父节点A的右子节点,父节点A为父节点的父节点C的左子节点。首先以父节点A为中心经行左单旋,然后以父节点A的父节点C为中心进行右单旋。相反则先以父节点A为中心右旋,然后再以节点C为中心左旋。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值