红黑树
红黑树是不严格的平衡二叉树
红黑树只是二叉查找树,不是平衡二叉树。“红黑树在最差情况下,最长的路径都不会比最短的路径长出两倍。其实红黑树并不是真正的平衡二叉树,它只能保证大致是平衡的,因为红黑树的高度不会无限增高,在实际应用用,红黑树的统计性能要高于平衡二叉树,但极端性能略差。”
一、红黑树的特点:
1.每个节点不是黑色就是红色
2.根节点永远是黑色
3.叶子节点是null节点,且颜色是黑的
4.当一个节点是红色的,那么它的子节点必须是黑色的
5.一个节点的所有子孙节点到该节点的所有路径上包含相同数目的黑色节点
注:可以通过下图把每个特点理解一下
![](https://img-blog.csdnimg.cn/img_convert/e2723d2a5717134a86426007f96d8178.png)
3、红黑树的自我修正
红黑树通过三种方式进行自我修正:改变节点颜色、左旋转和右旋转。
我们在插入结点时,要插入红色节点,因为相对黑色节点来说,插入红色节点需要变化的可能性比较小,修正的代价也比较小。
我们在下面这棵红黑树上插入6这个结点
改变节点颜色
如果当前结点的父节点是红色,且祖父节点的另外一个子节点(即叔叔结点)也为红色
把父节点和叔叔结点置为黑色
把祖父结点置为红色
最后把指针指向祖父节点,分析祖父节点将要变换的原则(指向 8 )
![](https://img-blog.csdnimg.cn/img_convert/f428ad36f9e4267094f18d4e87b82e98.png)