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