Java集合(三):TreeMap-红黑树实现原理
TreeMap实现原理其实就是红黑树得实现原理
内部参数
public class TreeMap<K,V> extends AbstractMap<K,V>
implements NavigableMap<K,V>, Cloneable, java.io.Serializable
{
//比较器,TreeMap是有序的,通过此接口对TreeMap内部进行精密控制
private final Comparator<? super K> comparator;
//红黑树节点,TreeMap内部类
private transient Entry<K,V> root;
//大小
private transient int size = 0;
//修改次数
private transient int modCount = 0;
//颜色
private static final boolean RED = false;
private static final boolean BLACK = true;
}
红黑树规定
1、每个节点只能是红色或黑色
2、根节点是黑色
3、每个叶节点(叶子节点、空节点)为黑色
4、一条路径上不能出现两个连续红节点(红节点的所有子节点和父节点都是黑色)
5、从任意节点到每个叶子的所有路径都包含相同数量的黑节点
增加节点
约定名称:
大体分为以下几种情形
增加详细解释:https://www.jianshu.com/p/96e652ccf720