红黑树的定义、特性

160 阅读1分钟

红黑树简单了解

学习红黑树之间首先首要了解二叉搜索树。

参考笔记:juejin.cn/post/684490…

1.二叉搜索树定义

1.左子树上所有节点的值均小于等于根节点的值

2.右子树上所有节点的值均大于等于跟节点的值

3.每一颗子树都要符合上述定义

缺点:

正常情况下 二叉搜索树的添加和查找的时间复杂度为O(log N)

当按序添加数据时,二叉搜索树退化成了一个链表,时间复杂度提高到O(N)

2.红黑树

红黑树是一种自平衡的二叉树查找树,符合二叉搜索树的基本特性。除此之外还附加特性

  1. 跟节点为黑色
  2. 节点的颜色只有红色和黑色
  3. 红色节点的孩子节点必须为黑色
  4. 叶子节点必须为黑色(NIL节点)
  5. 从任意节点到叶子节点所经过的黑色节点数量相同。

image-20220311155421003

特性:从跟节点到叶子节点上的最长路径不会超过最短路径的两倍

当插入或者删除时,有些规则可能会被打破,我们需要通过变色和旋转来调整。

1.变色

22节点时

image-20220311155748907

image-20220311155941229

image-20220311155952975

2.旋转

2.1左旋转

image-20220311160035347

2.2 右旋转

image-20220311160123232

总结:

当执行新增和删除时,红黑树通过变色和自旋来维持。

3.引用场景

HashMap