红黑树-面对大部头咱们使出堵门绝招~庖丁解牛

首先咱们要说一个事情是  红黑树其实就是一种特殊的二叉平衡树。 那咱们奇怪了,二叉平衡树哪里不好呢? 需要引入这么个改进版。 一般改进的东西肯定比不改进的东西牛,那么牛在哪里呢?

回忆一下二叉平衡树的特点是 左节点的值小于 根节点 小于 右节点。那么,如果我们有 1 2 3 4 四个元素,插入二叉平衡树,可能出现下面的情况吗?

 这两种情况都可能出现吧。什么?还有左边这种情况?直觉上就觉得不太对吧。

是的,少年,你的直觉是对的。左边这种情况效率就比较低。想想,如果我们要找 1. 左边这种情况找3次 而右边这种情况两次就够了。

所以引出了树里面一个很重要的概念 “平衡”,就是右边这种情况啦。当然,右边也不是绝对平衡,把右边的1 去掉就是平衡。 但是凡事很难尽善尽美嘛。差不多平衡我们也是可以接受的。而红黑树就是追求这种平衡。红黑树的定义比平衡二叉树复杂很多,没办法啊,你多了很多性质啊,规则不复杂点,一般就很难保证嘛。 

红黑树的定义有四条:

  1. 每个节点颜色不是黑色,就是红色
  2. 根节点是黑色的
  3. 如果一个节点是红色,那么它的两个子节点就是黑色的(没有连续的红节点)
  4. 对于每个节点,从该节点到其后代叶节点的简单路径上,均包含相同数目的黑色节点

那么我们简单说明一下,以上图右边的部分来简单解释一下:

3 是根节点  1  4 是叶子节点, 2是1的父节点, 4是1的叔叔节点, 毕竟2和4是兄弟嘛。

这里还要特别注意一下,通常我们初始化一个新节点,我们通常假设该节点是红色。因为这样上面4条性质更容易被满足,换言之,我们可以尽可能少的调整。

简单来说,我们看这个性质1, 不是黑色就是红色,满足。(我们默认红色)

性质二,根节点为黑色(如果没有根节点,我们把加入的这个节点变成 黑色,如果有,不影响)

 性质3, 每个节点是红色,两个子节点是黑色。这个由于我们不知道插入在哪里,所以不清楚,疑似不满足 

性质4, 每个节点到后代叶子节点的黑色节点数目相同。(满足,我们加的是红色节点啊默认)

今天关于红黑树就简单说到这里。最近改论文改的很累。不过坚持每天过来更新。我个人的习惯就是遇到一个比较难的问题,就一点一点的看。千万不要贪多图快。下一篇博客,咱们接着讨论红黑树的基本操作,即如何保持红黑树平衡特性。 咱们每天学一点点,再难的问题最终都会被我们解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值