红黑树与平衡二叉树


前言

数据库的底层用到了多种树结构,这里简单记录一下红黑树与平衡二叉树。


一、平衡二叉树

  • 满足二叉树。
  • 任何节点的两个子树的高度最大差为1。
  • 如果对平衡二叉树进行删除和新增,那么会破坏平衡,就会出发旋转,最终达到平衡,也成自平衡二叉树。
    下图是从1顺序插入到6,所形成的的平衡二叉树。
    在这里插入图片描述

二、红黑树

红黑树也是自平衡(但没有高度差为1的限制,它有另外一套规则)

  • 每个结点是红的或者黑的
  • 根结点是黑的.
  • 每个叶子结点是黑的 (NULL)
  • 树中不存在两个相邻的红色结点 (即红色结点的父结点和孩子结点均不能是红色)。
  • 从任意一个结点 (包括根结点) 到其任何后代 NULL 结点 (默认是黑色的) 的每条路径都具有相同数量的黑色结点。
    下图是从1顺序插入到6,所形成的的红黑树。可以看到是不满足平衡二叉树的(两个子树的高度最大差不为1),但是满足红黑树。
    在这里插入图片描述
    在这里插入图片描述

区别

总的来说:
(1)红黑树放弃了平衡二叉树的完全平衡,追求大致平衡,在与平衡二叉树性能相差不大的情况下,保证每次插入或删除最多执行3次旋转就能达到平衡。
(2)而平衡二叉树追求绝对平衡,条件苛刻,每次插入或删除需要执行的旋转操作次数是未知的。
(3)红黑树查找比平衡二叉树稍差,因为平衡二叉树是高度平衡,但插入删除要比平衡二叉树好,因为旋转次数少。
(4)一般来说,红黑树有更好的效率和更高的统计性能。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值