红黑树
基本组成的概念
由搜索二叉树组成引进了红黑节点限制条件的判断。
- 每个结点不是红色就是黑色
这个只有两种颜色,一种黑色,一种白色。
- 根节点是黑色的
头节点一定是黑色的。
- 如果一个节点是红色的,则它的两个孩子结点是黑色的
不可以有连续的红节点
- 对于每个结点,从该结点到其所有后代叶结点的简单路径上(简单,指的是只有一个分支),均 包含相同数目的黑色结点
- 每个叶子结点都是黑色的
每一个最后子节点,后面的节点是黑色的
红黑树的定义
基本上与二叉树相同。只是引入了枚举变量,用来定义每一个节点的颜色。
红黑树的插入
基本的东西与AVL的规则相同。只是引入了最长路径节点数量不会超过最短路径的节点个数。
第一种的情况
最简单的情况,添加节点(一般为红色)让高度增加,需要不断的向上更新节点的颜色(更改颜色,让他满足不允许有连续的红色节点)。
最后需要把头节点放置为黑色
基本结构就是
a(黑)
b (红) c(黑)
d(红) d(这个地方也可以)
第二种情况
a (黑)
b (红) d(黑,可以存在,也可以不存在)
c(红) c(红,这里也可以)
进行单旋(与AVL树的单旋相同)
第三种情况
a(黑)
b(红) c(黑,可以不存在)
d(红)
多次单旋结合最后可以得到满足条件的结果。