红黑树

正常的二叉树,在添加或者删除一个节点的时候,整个二叉树的结构会发生变更,会导致某些查找路径变的很长(深度),比如说下面这样的,


不平衡的树结构

红黑二叉树在普通二叉树的基础上有设定了一些基本的规则

  • 节点是红色或者黑色;
  • 根节点是黑色;
  • 所有的叶子(NIL节点)都是黑色;
  • 每个红色节点都必须有两个黑色子节点;(每个叶子到跟的所有路径上不能有两个连续的红色节点)
  • 从任意一个节点到其每个叶子的所有简单路径都包含相同数目的黑色节点;

如果在添加删除节点的过程中生成的新的树不满足上述的基本规则,就需要通过一些方法对二叉树进行调整,以使得它能满足红黑树的基本要求,

  • 左旋转;
  • 右旋转;
  • 重新着色;

当二叉树重新满足红黑树的基本规则以后,这个二叉树又恢复了平衡的状态,就如同下面这张图上一样,

平衡的树结构

所以红黑树的高度会一直维持在O(log(n)),n是节点的个数,可以极大降低查找算法的复杂度。

关于定理的证明以及红黑二叉树的插入删除操作网上有很多例子,就不赘述了;后面有个链接是演示红黑树的插入删除操作,以及在这个过程中怎么做到自平衡的过程,有助于理解红黑树存在的原因。

REF
wiki: 红黑树
Red-Black Tree visulization

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、红黑树介绍 红黑树又称R-B Tree,全称是Red-Black Tree,它是一种特殊的二叉查找树,红黑树的...
    文哥的学习日记阅读 10,235评论 1赞 35
  • 上一篇:Java集合-ConcurrentHashMap工作原理和实现JDK8 本文学习知识点 1、二叉查找树,以...
    Misout阅读 14,094评论 9赞 67
  • 0.目录 1.算法导论的红黑树本质上是2-3-4树 2.红黑树的结构和性质 3.红黑树的插入 4.红黑树的删除 5...
    王侦阅读 2,820评论 1赞 2
  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 4,883评论 1赞 31
  • 四种养脾的禁忌和日常养脾需知 脾为后天之本,但如何养脾却大有学问,以下四种养脾禁忌,大家一定不能犯。 忌生冷...
    快乐中姐阅读 855评论 0赞 3

友情链接更多精彩内容