紅黑樹(Red Black Tree) 是一種自平衡二叉查找樹,是在計算機科學中用到的一種數據結構,典型的用途是實現關聯數組。編程
性質
紅黑樹是每一個節點都帶有顏色屬性的二叉查找樹,顏色或紅色或黑色。在二叉查找樹強制通常要求之外,對於任何有效的紅黑樹咱們增長了以下的額外要求:
性質1. 節點是紅色或黑色。
性質2. 根節點是黑色。
性質3 每一個葉節點(NIL節點,空節點)是黑色的。
性質4 每一個紅色節點的兩個子節點都是黑色。(從每一個葉子到根的全部路徑上不能有兩個連續的紅色節點)
性質5. 從任一節點到其每一個葉子的全部路徑都包含相同數目的黑色節點。
用途
紅黑樹和AVL樹同樣都對插入時間、刪除時間和查找時間提供了最好可能的最壞狀況擔保。這不僅是使它們在時間敏感的應用如即時應用(real time application)中有價值,並且使它們有在提供最壞狀況擔保的其餘
數據結構中做爲建造板塊的價值;例如,在計算幾何中使用的不少數據結構均可以基於紅黑樹。
紅黑樹在
函數式
編程中也特別有用,在這裏它們是最經常使用的持久
數據結構之一,它們用來構造
關聯數組和集合,在突變以後它們能保持爲之前的版本。除了O(log n)的時間以外,紅黑樹的持久版本對每次插入或刪除須要O(log n)的空間。