红黑树实现

目录

1. 红黑树的概念

1.1 红黑树的规则

1.2 红黑树如何确保最长路径不超过最短路径的2倍呢?

1.3 红黑树的效率

​编辑2. 红黑树的实现

2.1 红黑树的结构

2.2 红黑树的插入

2.2.1 红黑树插入一个值的大概过程

2.2.2 情况1:变色

2.2.3 情况2:单旋+变色

2.2.4 情况3:双旋+变色

2.3 红黑树的插入代码实现

2.4 红黑树的查找

2.5 红黑树的高度

2.6 红黑树节点个数

2.7 红黑树的验证

2.8 红黑树的删除

3. 红黑树与AVL树性能对比

4. 红黑树代码 


1. 红黑树的概念

红黑树时一棵二叉搜索树,他的每个节点增加一个存储位来表示节点的颜色,可以是红色或者黑色。通过对任何一条从根到叶子的路径上各个节点的颜色进行约束,红黑树确保没有一条路径会比其他路径长出2倍,因而是接近平衡的。

1.1 红黑树的规则

  1. 每个节点不是红色就是黑色
  2. 根节点是黑色的
  3. 如果一个节点是红色的,则它的两个孩子节点必须是黑色的,也就是说任意一条路径不会有连续的红色节点。
  4. 对于任意一个节点,从该节点到其所有NULL节点的简单路径上,均包含相同数量的黑色节点。

说明:《算法导论》等书记上补充了一条每个叶子节点(NIL)都是黑色的规则。他这里所指的叶子节点不是传统的意义上的叶子节点,而是我们说的空节点,有些书籍上也把NIL叫做外部节点。NIL是为了方便准确的标识出所

你可能感兴趣的:(C++,算法,c++,数据结构)