1. 程式人生 > >筆試面試常考資料結構紅黑樹性質總結

筆試面試常考資料結構紅黑樹性質總結

紅黑樹

一、定義

紅黑樹是一種特定型別的二叉樹,是在電腦科學中用到的一種資料結構,典型的用途是實現關聯陣列。它是在1972年由RudolfBayer發明的,他稱之為"對稱二叉B樹",它現代的名字是在LeoJ.Guibas和RobertSedgewick於1978年寫的一篇論文中獲得的。它是複雜的,但它的操作有著良好的最壞情況執行時間,並且在實踐中是高效的,它可以在O(logn)時間內做查詢,插入和刪除,這裡的n是樹中元素的數目。紅黑樹是一種自平衡二叉查詢樹,是在電腦科學中用到的一種資料結構,典型的用途是實現關聯陣列

二、性質

紅黑樹是每個節點都帶有顏色屬性的二叉查詢樹,顏色或紅色或黑色。在二叉查詢樹強制一般要求以外,對於任何有效的紅黑樹我們增加了如下的額外要求:

性質1. 節點是紅色或黑色。

性質2. 根節點是黑色。

性質3 每個葉節點是黑色的。

性質4 每個紅色節點的兩個子節點都是黑色。(從每個葉子到根的所有路徑上不能有兩個連續的紅色節點)

性質5. 從任一節點到其每個葉子的所有路徑都包含相同數目的黑色節點。

三、用途和好處

紅黑樹和AVL樹一樣都對插入時間、刪除時間和查詢時間提供了最好可能的最壞情況擔保。這不只是使它們在時間敏感的應用如即時應用(real time application)中有價值,而且使它們有在提供最壞情況擔保的其他資料結構中作為建造板塊的價值;例如,在計算幾何中使用的很多資料結構都可以基於紅黑樹。

紅黑樹在函數語言程式設計中也特別有用,在這裡它們是最常用的持久資料結構之一,它們用來構造關聯陣列和集合,在突變之後它們能保持為以前的版本。除了O(log n)的時間之外,紅黑樹的持久版本對每次插入或刪除需要O(log n)的空間。

紅黑樹是 2-3-4樹的一種等同。換句話說,對於每個 2-3-4 樹,都存在至少一個資料元素是同樣次序的紅黑樹。在 2-3-4 樹上的插入和刪除操作也等同於在紅黑樹中顏色翻轉和旋轉。這使得 2-3-4 樹成為理解紅黑樹背後的邏輯的重要工具,這也是很多介紹演算法的教科書在紅黑樹之前介紹 2-3-4 樹的原因,儘管 2-3-4 樹在實踐中不經常使用。

//資料來源於搜狗百科