目录
一:红黑树原理
什么是红黑树:
红黑树是一个二叉查找树,但不是高度平衡的树
- 以前交平衡二叉B树
- 每一个节点可以是红或者是黑的
- 红黑树不是高度平衡的,它的平衡是根据自己的红黑规则进行实现的
红黑规则:
- 每一个节点或是红色的,或者是黑色的;
- 根节点必须是黑色;
- 如果一个节点没有子节点或者父节点,则该节点相应的指针属性值为Nil,这些Nil视为叶节;点,每个叶节点都是黑色的;
- 如果某一个节点是红色的,那么它的子节点必须是黑色(不能出现红色节点相连的情况);
- 对于每一个节点,从该节点到其所有后代叶子节点的简单路径(不能回头,只能往前)上,均包含相同数目的黑色节点
解释一下第5点:我们以17节点为例,我们到15节点的左子节点Nil和右子节点Nil是包含了两个黑色节点,再从17节点到22节点的两个Nil节点也是包含了两个黑色节点。
每一个红黑树的节点都包含下图这些内容
添加节点:
- 添加的节点的颜色,可以是红色的,也可以是黑色的
- 添加节点时默认节点颜色为红色,效率是最高的,添加三个元素,一共只需要调整一次,所以添加效率最高
添加节点时如何保证红黑规则
我们这有十个节点:默认为红色
1. 我们先添加这个20号,因为根节点必须为黑色所以我们将20号颜色改为黑色
2. 现在我们要添加18,因为18比20小,所以添加到20的左子节点上,在添加23号,同理添加到20的右子节点上
结论1:其父节点为黑色,不需要做任何操作。
3.继续添加22号,放在23号的左子节点上。