紅/黑樹狀結構

來源:互聯網
上載者:User

標籤:

1.概念

紅/黑樹狀結構是一種自平衡二叉尋找樹,是在電腦科學中用到的一種資料結構,典型的用途是實現關聯陣列。它是在1972年由魯道夫·貝爾發明的,他稱之為"對稱二叉B樹",它現代的名字是在 Leo J. Guibas 和 Robert Sedgewick 於1978年寫的一篇論文中獲得的。它是複雜的,但它的操作有著良好的最壞情況已耗用時間,並且在實踐中是高效的: 它可以在O(log )時間內做尋找,插入和刪除,這裡的是樹中元素的數目。

它的統計效能要好於平衡二叉樹(有些書籍根據作者姓名,Adelson-Velskii和Landis,將其稱為AVL-樹),因此,紅/黑樹狀結構在很多地方都有應用。在C++ STL中,很多部分(目前包括set, multiset, map, multimap)應用了紅/黑樹狀結構的變體(SGI STL中的紅/黑樹狀結構有一些變化,這些修改提供了更好的效能,以及對set操作的支援)。其他平衡樹還有:AVL,SBT,伸展樹,TREAP 等等。

2.性質

紅/黑樹狀結構是每個節點都帶有顏色屬性的二叉尋找樹,顏色或紅色或黑色。在二叉尋找樹強制一般要求以外,對於任何有效紅/黑樹狀結構我們增加了如下的其他需求:

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

性質2. 根節點是黑色。

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

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

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

這些約束強制了紅/黑樹狀結構的關鍵性質: 從根到葉子的最長的可能路徑不多於最短的可能路徑的兩倍長。結果是這個樹大致上是平衡的。因為操作比如插入、刪除和尋找某個值的最壞情況時間都要求與樹的高度成比例,這個在高度上的理論上限允許紅/黑樹狀結構在最壞情況下都是高效的,而不同於普通的二叉尋找樹。

要知道為什麼這些特性確保了這個結果,注意到性質4導致了路徑不能有兩個毗連的紅色節點就足夠了。最短的可能路徑都是黑色節點,最長的可能路徑有交替的紅色和黑色節點。因為根據性質5所有最長的路徑都有相同數目的黑色節點,這就表明了沒有路徑能多於任何其他路徑的兩倍長。

 

紅/黑樹狀結構

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.