TreeMap實現了SotredMap接口,它是有序的集合。而且是一個紅黑樹結構,每個key-value都作為一個紅黑樹的節點。如果在調用TreeMap的構造函數時沒有指定比較器,則根據key執行自然排序,如果指定了比較器則按照比較器來進行排序。
紅黑樹是一個更高效的檢索二叉樹,有如下特點:
- 每個節點只能是紅色或者黑色
- 根節點永遠是黑色的
- 所有的葉子的子節點都是空節點,並且都是黑色的
- 每個紅色節點的兩個子節點都是黑色的(不會有兩個連續的紅色節點)
- 從任一個節點到其子樹中每個葉子節點的路徑都包含相同數量的黑色節點(葉子節點到根節點的黑色節點數量每條路徑都相同)
- 關於紅黑樹的節點插入操作,首先是改變新節點,新節點的父節點,祖父節點,和新節點的顏色,能在當前分支通過節點的旋轉改變的,則通過此種操作,來滿足紅黑書的特點。
- 如果當前相關節點的旋轉解決不了紅黑樹的沖突,則通過將紅色的節點移動到根節點解決,最后在將根節點設置為黑色
對於紅黑二叉樹而言它主要包括三大基本操作:左旋、右旋、着色。