紅黑樹

1.基本概念:html

 紅黑樹,一種二叉查找樹,但在每一個節點上增長一個存儲位表示節點的顏色,紅色或者黑色,經過對任何一條從根到葉子的路徑上各個節點着色方式的限制,紅黑樹確保沒有一條路徑會比其餘路徑長處兩倍,於是接近是平衡的。指針

 

2.特性:htm

(1)紅黑樹是一顆二叉查找樹,執行查找,插入,刪除等操做的時間複雜度爲O(lgn)blog

(2)若是一顆具備n個節點的線性鏈,那麼二叉查找樹的最壞狀況時間O(n),而紅黑樹能保證在最壞狀況下,基本的動態幾何操做的時間均爲O(lgn)。im

 

紅黑樹的特色:db

 1).每一個節點要麼是紅的,要麼是黑的。img

 2).根節點時黑的。紅黑樹

 3).每一個葉子節點,即空節點(NIL)是黑的。時間

 4).若是一個節點時紅的,那麼它的兩個兒子都是黑的。co

 5).對每一個節點,從該節點到其子孫節點的全部路徑上包含相同數目的黑節點。

 

3.樹的旋轉

前景:當咱們對紅黑樹進行插入和刪除等操做時,對樹作了修改,可能會違背紅黑樹的性質,爲了保持紅黑樹的性質,咱們能夠經過對樹進行旋轉,即修改樹種某些節點的顏色及指針結構,以達到紅黑樹進行插入,刪除等操做,紅黑樹依然能保持它特有的性質。

 

3.1 左旋:

  

1).若是x的父節點是空節點,則將y設爲根節點;

2).若是x是它父節點的左孩子,則將y設爲「x的父節點的左孩子」;

3).若是x是它父節點的右孩子,將y設爲「x的父節點的右孩子」;

將x設爲y的左孩子,

將x的父節點設爲y

 

3.2右旋

  

對Y進行右旋,意味着「將Y變成一個右節點」

若是「y的父親」是一個空節點,則將X設爲根節點;

若是y是它父節點的右孩子,則將x設爲「y的父節點的右孩子」

若是y是它父節點的左孩子,將x設爲「y的父節點的左孩子」

將y設爲x的右孩子,

將y的父節點設爲x

 

 

 

 

原文參考:http://www.cnblogs.com/v-July-v/archive/2010/12/29/1983707.html

       http://www.cnblogs.com/skywang12345/p/3245399.html

相關文章
相關標籤/搜索