1. 程式人生 > >紅黑樹( Red-Black Tree ) - 筆記

紅黑樹( Red-Black Tree ) - 筆記

沖突 性能 tro 紅黑樹特性 最短路徑 方式 筆記 nbsp 一個

1. 紅黑樹屬性:根到葉子的路徑中,最長路徑不大於最短路徑的兩倍。

2. 紅黑樹是一個二叉搜索樹,並且有

  a. 每個節點除了有左、右、父節點的屬性外,還有顏色屬性,紅色或者黑色。

  b. ( 根屬性 ) 紅黑樹的根只能是黑色

  c. ( 紅色屬性 ) 紅色節點的子節點只能是黑色

  d. ( 黑色屬性 ) 從給定的節點到其後代葉子節點的每一條路徑上,出現的黑色節點數目一樣。其中,從某個節點到其後代葉子節點的路徑上出現的黑色節點數,被稱為該節點的黑高度( black-height )。

3. 紅黑樹上的查找、輸出操作和在二叉搜索樹上相同。二叉搜索的插入、刪除操作應用到紅黑樹後,可能打破上面提到的紅黑樹特性。如果打破了,需要調整結構來恢復紅黑樹的特性。

4. 插入,每次插入的節點都標示為紅色,可能出現兩個連續紅色節點,以至於打破紅色屬性。若是打破了,根據叔節點( 父節點的兄弟節點 )的顏色,采用不同的調整方式。

刪除,刪除的節點如果是紅色,不會打破特性;如果是黑色,可能改變其他節點的黑高,打破黑色屬性。若是打破了,同樣需要分情況,采用不同的調整方式。

插入操作、刪除操作的具體實現,尚未讀透,有需要再深入理解。

應用場景:Java HashMap 在處理大量 hash 值沖突時,采用紅黑樹結構存儲沖突的元素,提高性能。

紅黑樹( Red-Black Tree ) - 筆記