1. 程式人生 > 其它 >Java集合(三):TreeMap-紅黑樹實現原理

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

刪除節點

增加詳細解釋:https://www.jianshu.com/p/84416644c080