红黑树

参考:

https://juejin.cn/post/6844903519632228365

https://zhuanlan.zhihu.com/p/143585797

引入

先了解二叉查找树

  • 如果左子树不为空,则左子树上所有节点的值均小于根节点的值
  • 如果右子树不为空,则右子树上所有节点的值均大于根节点值
  • 左右子树也都是二叉查找树

 二分查找的思想,查找所需的最大次数等于二叉查找树的高度

但是有单分支可能过长的缺陷,也就是不平衡了,查找变成线性的了

 而红黑树是一种自平衡的二叉树

 

红黑树

自平衡二叉树

除了符合二叉查找树的基本特性外

1.节点是红色或黑色。

2.根节点是黑色

3.每个叶子节点都是黑色的空节点(NIL节点)。  (每个父节点一定有两个叶子节点,没有的就用NIL填充)

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

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

 规则 3与5联合起来,红黑树就不会出现单链或者单链过长的情况

 

调整

破坏规则的情况,可以通过“变色”和“旋转”来进行调整,“旋转”又分为左旋转和右旋转

待续。。。

 

posted on 2023-04-23 19:28  or追梦者  阅读(6)  评论(0编辑  收藏  举报