红黑树
参考:
引入
先了解二叉查找树
- 如果左子树不为空,则左子树上所有节点的值均小于根节点的值
- 如果右子树不为空,则右子树上所有节点的值均大于根节点值
- 左右子树也都是二叉查找树
二分查找的思想,查找所需的最大次数等于二叉查找树的高度
但是有单分支可能过长的缺陷,也就是不平衡了,查找变成线性的了
而红黑树是一种自平衡的二叉树
红黑树
自平衡二叉树
除了符合二叉查找树的基本特性外
1.节点是红色或黑色。
2.根节点是黑色。
3.每个叶子节点都是黑色的空节点(NIL节点)。 (每个父节点一定有两个叶子节点,没有的就用NIL填充)
4 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
5.从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。
规则 3与5联合起来,红黑树就不会出现单链或者单链过长的情况
调整
破坏规则的情况,可以通过“变色”和“旋转”来进行调整,“旋转”又分为左旋转和右旋转
待续。。。
作者: deity-night
出处: https://www.cnblogs.com/deity-night/
关于作者:码农
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(***@163.com)咨询.