红黑树原理

红黑树


在这里插入图片描述

满足的条件:
1.红链接全在左边,红链接所指为红节点;
2.两个红链接不能连在一个节点上;
3.根节点默认为黑节点;
4.从根节点到叶子节点每条路径经历的黑链接数量一致,包括黑色空叶子节点,最长路径不超过最短路径的2倍

插入操作:
每次按照二叉搜索树的搜索查到到对应的叶子节点位置,再通过左旋右旋两红链接上升达到红黑树的条件

(图中N为包括该节点的子树中的节点个数,isRed为一布尔值表示是否为红节点,isRed函数用来表示空叶子节点为黑色)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
红黑树是一种自平衡的二叉搜索树,它在插入和删除节点时通过一系列的操作来保持树的平衡。下面是红黑树的一些原理: 1. 节点颜色:每个节点被标记为红色或黑色。 2. 根节点和叶子节点:根节点是黑色的,叶子节点(空节点)是黑色的。 3. 节点关系:如果一个节点是红色的,则它的子节点必须是黑色的。 4. 黑色节点数量:从根节点到任意叶子节点的路径上,包括根节点和叶子节点,黑色节点数量相同。 5. 插入操作:插入新节点时,首先按照二叉搜索树的规则进行插入,然后根据红黑树的规则进行调整,使得树保持平衡。 - 如果插入节点的父节点是黑色的,那么不需要做任何操作。 - 如果插入节点的父节点是红色的,那么需要进行调整。 - 如果插入节点的叔叔节点也是红色的,将父节点和叔叔节点都设置为黑色,祖父节点设置为红色,并以祖父节点作为新插入节点进行进一步调整。 - 如果插入节点的叔叔节点是黑色的,需要进行旋转操作来保持平衡。根据具体情况,可以进行左旋、右旋或双旋操作。 6. 删除操作:删除节点时,首先按照二叉搜索树的规则进行删除,然后根据红黑树的规则进行调整,使得树保持平衡。 - 如果待删除节点有两个子节点,需要找到它的后继节点(比待删除节点大的最小节点)来替代待删除节点,然后再删除后继节点。 - 如果待删除节点有一个子节点或没有子节点,直接删除即可。 - 如果删除的节点是红色的,不会破坏红黑树的性质,不需要进行调整。 - 如果删除的节点是黑色的,需要进行调整来保持平衡。根据具体情况,可以进行旋转操作和改变颜色。 通过这些原理和调整操作,红黑树可以保持平衡,并且具有较好的查找、插入和删除性能。它被广泛应用于各种数据结构和算法中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值