红黑树自平衡原理

红黑树自平衡原理

红黑树自平衡的原理

红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它在1972年由鲁道夫·贝尔发明,被称为”对称二叉B树“,它现代的名字源于Leo J. Guibas和Robert Sedgewick1978年写的一篇论文。红黑树的结构复杂,但它的操作有着良好的最坏情况运行时间,并且在实践中高效:它可以在O{logn}时间内完成查找、插入和删除

红黑树是2-3-4树的一种等同。换句话说,对于每个2-3-4树,都存在至少一个数据元素是同样次序的红黑树。在2-3-4树上的插入和删除操作也等同于在红黑树中颜色翻转和旋转。这使得2-3-4树成为理解红黑树背后的逻辑的重要工具,这也是很多介绍算法的教科书在红黑树之前介绍2-3-4树的原因,尽管2-3-4树在实践中不经常使用。红黑树相对于AVL树来说,牺牲了部分平衡性以换取插入/删除操作时少量的旋转操作,整体来说性能要优于AVL树。

红黑树是每个节点都带有颜色属性的二叉查找树,颜色为红色黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求:

  1. 节点是红色或黑色。

  2. 根是黑色。

  3. 所有叶子都是黑色(叶子是NIL黑色节点)。

  4. 每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。)

  5. 从任一节点到其每个叶子的所有路径]都包含相同数目的黑色节点。(黑色完美平衡)

红黑树

红黑树自平衡的最小单元

最小单元_20200626165547

红黑树自平衡的原子操作

原子操作

变色

变色_20200626170352

旋转

左旋_20200626170405

右旋_20200626170414

红黑树的新增

红黑树新增四种情况

case3:父节点与叔叔节点为红色

case3

case4.1 三点一线

case4.1

case4.2 三角关系

case4.2

# 推荐文章
  1.git推送到vps
  2.http服务器搭建
  3.linux网卡命名
  4.docker使用
  5.hexo创建博客

评论


:D 一言句子获取中...

加载中,最新评论有1分钟延迟...