红黑树的描述

定义:红黑树是一种含有红黑结点并能自平衡的二叉查找树。他满足下面5个性质
性质一:每个结点要么是黑色,要么是红色的。
性质二:根节点是黑色
性质三:每个叶子节点(NIL)是黑色的。
性质四:每个红色结点的两个子节点一定都是黑色。
性质五:任意结点到每个叶子结点的路径都包含数量相同的黑结点

:二叉查找树:左节点小于父节点,右节点大于父节点。

红黑树的平衡性

在这里插入图片描述
最长边是最短边的2倍
本质上也是用树高控制平衡条件。

调整策略

1.插入调整站在祖父结点
2.删除调整站在父节点
3.插入和删除的情况处理一共五种

插入调整的情况

情况一

在这里插入图片描述
插入黑色结点必然会发生调整。
插入红色结点可能会进行调整

假设图上的x是新插入的结点

  • 站在祖父向下看
  • 把它当成一个子树,
  • 调整之前每条路径的黑色节点数=调整之后黑色节点数量

处理办法:1和20修改成黑色,15修改成红色(所谓的红色上顶)

情况二

在这里插入图片描述
转化之后
在这里插入图片描述
只有17这个结点可有可无
确定的:黑色:20,25,1,6,5,13
红色:10,15
处理办法:LL型,大右旋,20调整成红色,15调整成黑色。10调整成红色

**补充:**平衡二叉树
调整的LL、RR、LR、RL

在这里插入图片描述

总结插入策略

  • 叔叔节点为红色的时候,修改三元组小帽子,改成红黑黑
  • 叔叔节点为黑色的时候,参考AVL树的失衡情况,分成LL,RR,LR,RL先参考AVL树的旋转调整策略,然后在修改三元组的颜色,有两种调整策略:红色上浮,红色下沉
  • 两大类情况,包含8种小情况

删除调整的前提

  • 删除红色结点,不会对红黑树的平衡产生影响
  • 度为1的黑色节点,唯一子孩子,一定是红色
  • 删除度为1的黑色节点,不会产生删除调整
  • 删除度为0的黑色节点,会产生一个双重黑的NIL节点
  • 删除调整,就是为了干掉双重黑
    情况一

在这里插入图片描述
处理办法:brother调整为红色,x减少一重黑色,father增加一重黑色

双重黑节点的兄弟节点是黑色,兄弟节点下面的两个子节点也黑色,父节点增加一重黑色,双重黑节点,分别减少一重黑色。

情况二、
在这里插入图片描述
38的右子树转化成下图注蓝色代表黑色
在这里插入图片描述

处理办法:brother右(左)旋,51变黑,72变红,转成处理情况三

情况三、
在这里插入图片描述

左子树转化成
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值