红黑树
什么是红黑树?
为了解决二叉查找树多次插入新节点而导致的不平衡,我们发明了红黑树(Red-Black Tree,R-B Tree)。
红黑树是一种自平衡的二叉查找树。
时间复杂度O(logn)
红黑树的特性
(根据特性来进行自平衡,其实就是规则)
1.每个节点或者是黑色,或者是红色
2.根节点是黑色
3.每个叶子节点(NIL)是黑色。(这里叶子节点,是指为空的叶子节点)
4.如果一个节点是红色的,则它的子节点必须是黑色的。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
5.从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。
红黑树自平衡的操作
两种,变色和旋转,旋转又分为左旋转和右旋转。
变色:
应用规则5
应用规则4
旋转:
左旋转:逆时针旋转红黑树的两个节点,使得父节点被自己的右孩子取代,而自己成为自己的左孩子。
右旋转:顺时针旋转红黑树的两个节点,使得父节点被自己的左孩子取代,而自己成为自己的右孩子。
适用场景
动态插入、删除,查找数据的场景