红黑树学习笔记

因为学习HashMap的时候,遇到了红黑树,故而复习哈,

想深度学习的请转到下面链接,作者图文并茂的详细讲解了哈,分析的很清楚,觉得好的不忘给别人手动比心。
30张图带你彻底理解红黑树

因为从这里开始,是自己的学习笔记,从上面提到的文章中学习总结的,主要是为了给自己看,记录哈,容易忘记,纯概念,可能比较苦涩,见谅

首先说一下,红黑树的规则,
1,根节点必须是黑色的
2,节点只有两种颜色,黑色和红色
3,红色节点的两个子节点一定都是黑色的
4,每一个节点通往叶子节点的路径上的黑色节点的个数相同
5,每个叶子节点都是黑色的

红黑树插入节点,8种场景

情景一,红黑树为空
直接把插入节点作为根节点
情景二,插入节点的key已经存在
直接替换值
情景三,插入节点的父节点是黑色的
直接插入
情景四,插入节点的父节点是红色的
     1,叔叔节点存在,且为红色
     祖父节点变红色,父亲,叔叔节点转黑色。
     2,叔叔节点为空或者为黑色,且父亲节点是祖父节点的左子节点
          <1>插入节点是父节点的左子节点
                    祖父节点变为红色,父节点变为黑色,右旋祖父节点
          <2>插入节点是父亲节点的右子节点,
                    父亲节点左旋,父亲节点转黑色,祖父节点转红色,右旋祖父节点
     3,叔叔节点为空或为黑色,且父亲节点是祖父节点的右子节点
          <1>插入节点是父亲节点的右子节点
                    祖父节点变为红色,父亲节点变为黑色,左旋祖父节点
          <2>插入节点是父亲节点的左子节点
                    右旋父亲节点,父亲节点变为红色,祖父节点变为黑色,左旋祖父节点

红黑树删除场景,9中场景,

删除场景,
1,没有子节点,直接删除
2,只有一个子节点,用子节点代替删除节点。
3,有两个子节点,用后继节点代替删除节点(其实用前继节点也一样)。后继节点就是,右子树最左边的叶子节点

删除思想,在不考虑键值的情况下,将删除节点,转换为删除替换节点。替换节点就是后继节点。并且在最后,将删除节点的键值改为替换节点的值,并将替换节点删除,所以此处我们就需要考虑替换节点删除时的,二叉树平衡问题。

情景一,替换节点是红色,
               直接删除
情景二,替换节点是黑色
          2.1,替换节点是左子节点
               2.1.1替换节点的兄弟节点是红色节点
                    兄弟节点转换为黑色,父亲节点转换为红色,左旋父亲节点。那么转到2.1.2.(3);
               2.1.2替换节点的兄弟节点是黑色节点
                    2.1.2.(1)替换节点的兄弟节点的左子节点颜色任意,右子节点红色
                         修改兄弟节点的颜色为父节点的颜色,父亲节点修改为黑色,兄弟节点的右子节点修改为黑色,左旋父亲节点
                    2.1.2.(2)替换节点的兄弟节点的左子节点是红色,右子几点是黑色
                         兄弟节点的左子节点变为黑色,兄弟节点变为红色,兄弟节点右旋,转到2.1.2.(1)
                    2.1.2.(3)替换节点的兄弟节点的左子节点是黑色,右子节点是黑色
                         兄弟节点变为红色,替换节点变为父节点,继续进行删除规则。
当替换节点向上,定位到根节点的时候,结束,并删除节点
          2.2,替换节点是右子节点
               2.2.1 替换节点的兄弟节点是红色节点的时候,
                    兄弟节点变为黑色,父亲节点变为红色,父亲节点右旋,转到2.2.2.(3)
               2.2.2 替换节点的兄弟节点是黑色节点的时候
                    2.2.2.(1) 替换节点的兄弟节点的左子节点是红色,右子节点任意
                        左子节点变为父亲节点的颜色,父亲节点变为红色,兄弟节点的左子节点变为黑色,右旋父亲节点。
                    2.2.2.(2)替换节点兄弟节点的左子节点是黑色,右子节点是红色,
                        兄弟节点变为红色,右子节点变为黑色,左旋兄弟节点,转到2.2.2.(1)
                    2.2.2.(3)替换节点的兄弟节点的左子节点是黑色,右子节点也是黑色,
                        兄弟节点转为红色节点,删除节点变为父节点,继续进行删除规则。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值