紅/黑樹狀結構與平衡二叉樹區別?_二叉樹

來源:互聯網
上載者:User
如果說平衡二叉樹是一個類的話,那麼紅/黑樹狀結構就是該類的一個執行個體。
演算法的書我丟久了,一下子也找不到,我是憑記憶說的。紅/黑樹狀結構的演算法比較麻煩,但它的思想很好,如果理解了它的思想也就理解它的演算法,我也只記得思想,具體演算法記不得了。我就在這說說思想吧。

紅/黑樹狀結構有兩個重要性質:
1、紅節點的孩子節點不能是紅節點;
2、從根到前端節點的任意一條路徑上的黑節點數目一樣多。

這兩條性質確保該樹的高度為logN,所以是平衡樹。

紅/黑樹狀結構是每個節點都帶顏色的樹,節點顏色或是紅色或是黑色,紅/黑樹狀結構是一種尋找樹。紅/黑樹狀結構有一個重要的性質,從根節點到葉子節點的最長的路徑不多於最短的路徑的長度的兩倍。對於紅/黑樹狀結構,插入,刪除,尋找的複雜度都是O(log N)。

插入的節點總是設為紅節點,當其複節點為紅節點時,這就有破壞了性質1,就需要調整。將插入節點作為考察節點,考察其叔父,如果也是紅節點,則將其父親和叔父改為黑節點,而將其祖父改為紅節點,然後以其祖父為考察節點。如果其叔父是黑節點則做一旋轉變換可以搞定,沒有圖不太好說明,你可以自己考慮一下,總之它的思想是把“多出來”的紅色往上一層推去,確保下面層紅黑性質,最後推到根以後,如果依然違反性質1,則可以直接把根由紅改黑即可,就相當於把這“多出來”的紅色推到樹以外的節點去了。

刪除節點時先要找到頂替的節點,如果刪去的節點是黑色則破壞了性質2,也需要調整。調整的思想也同前面類似,把這個黑色賦予頂替節點,則頂替節點相當於有兩重黑色,然後將它的兩重黑色向上推,一直推到根,再從根推到外面去了。


平衡二叉樹的調整演算法幾乎所有資料結構的書都有呀,根據破壞平衡性的加入點,將插入操作分為了四種,分別是LL、LR、RR、RL。每種引起不平衡的插入位置,均有相應的調整演算法。




AVL樹又稱高度平衡的二叉搜尋樹,是1962年由兩位俄羅斯的數學家G.M.Adel'son-Vel,sky和E.M.Landis提出 的.引入二叉樹的目的是為了提高二叉樹的搜尋的效率,減少樹的平均搜尋長度.為此,就必須每向二叉樹插入 一個結點時調整樹的結構,使得二叉樹搜尋保持平衡,從而可能降低樹的高度,減少的平均樹的搜尋長度. 

AVL樹的定義:

 一棵AVL樹滿足以下的條件: 

1>它的左子樹和右子樹都是AVL樹 

2>左子樹和右子樹的高度差不能超過1 從條件1可能看出是個遞迴定義,如GNU一樣. 


性質: 

1>一棵n個結點的AVL樹的其高度保持在0(log2(n)),不會超過3/2log2(n+1) 

2>一棵n個結點的AVL樹的平均搜尋長度保持在0(log2(n)). 

3>一棵n個結點的AVL樹刪除一個結點做平衡化旋轉所需要的時間為0(log2(n)).


# 紅/黑樹狀結構是一種很有意思的平衡檢索樹。它的統計效能要好於平衡二叉樹(有些書籍根據作者姓名,Adelson- Velskii和Landis,將其稱為AVL-樹),因此,紅/黑樹狀結構在很多地方都有應用。在C++ STL中,很多部分(目前包括 set, multiset, map, multimap)應用了紅/黑樹狀結構的變體(SGI STL中的紅/黑樹狀結構有一些變化,這些修改提供了更好的效能,以及對set操作的支援)。  
#   
# 紅/黑樹狀結構的定義如下:  
#   
#   
# 滿足下列條件的二叉搜尋樹是紅/黑樹狀結構  
#   
#     * 每個結點要麼是“紅色”,要麼是“黑色”(後面將說明)  
#     * 所有的葉結點都是空結點,並且是“黑色”的  
#     * 如果一個結點是“紅色”的,那麼它的兩個子結點都是“黑色”的  
#     * (注:也就是說,如果結點是黑色的,那麼它的子節點可以是紅色或者是黑色的)。  
#     * 結點到其子孫結點的每條簡單路徑都包含相同數目的“黑色”結點  
#     * 根結點永遠是“黑色”的  



AVL 樹是高度平衡的,頻繁的插入和刪除,會引起頻繁的reblance,導致效率下降
紅/黑樹狀結構不是高度平衡的,算是一種折中,插入最多兩次旋轉,刪除最多三次旋轉

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.