紅黑樹分享大綱一

樹,這種結構在計算機領域應用非常廣泛,便于管理和查找。
樹的關鍵在與“分治”思想。我理解的分治思想就是將事務進行分類歸納,使得具有規律或者特征的來把數據或者事務聯系起來,這樣在查找或者使用的時候就可以有目的的忽略不需要浪費精力的部分,從而提高效率。
例如:文件系統(B+樹),DB索引(B+樹、哈希樹),treemap(紅黑樹),堆(完全二叉樹)

二叉樹

每個節點只有兩個子節點。
二叉查找樹,關鍵點是樹的深度。
堆結構就是一個完全二叉樹,(gc)。
二叉樹有很多種:紅黑樹,AVL樹,堆

AVL樹

1.本身首先是一棵二叉搜索樹。
2.帶有平衡條件:每個結點的左右子樹的高度之差的絕對值(平衡因子)最多為1。

1、二叉樹的深度為h,除第 h 層外,其它各層 (1~h-1) 的結點數都達到最大個數
2、第 h 層所有的結點都連續集中在最左邊

紅黑樹

樹的旋轉

1、左旋

270024492492764.gif

圖片引用http://www.cnblogs.com/yangecnu/p/Introduce-Red-Black-Tree.html
2、右旋

270025006402285.gif

圖片引用http://www.cnblogs.com/yangecnu/p/Introduce-Red-Black-Tree.html

紅黑樹性質

1、任何一個節點都有顏色,黑色或者紅色
2、根節點是黑色的
3、紅節點的子節點必須為黑節點
4、任何一個節點向下遍歷到其子孫的葉子節點,所經過的黑節點個數必須相等
5、空節點被認為是黑色的
6、新插入節點所帶顏色為紅色,需要根據以上性質進行調整
二叉查找樹的遍歷、查找,還有基于兩者的排序、contain等方法的實現,對于所有的類型的二叉查找樹都是相同的。

插入

對于二叉查找樹的插入操作基本操作都是一樣的,都是先通過二分查找法找到所需要插入數據對應的位置,插入節點。關鍵的不同是:不同的查找樹在插入節點后,為了保持相應的性質所需進行的在平衡操作。
1、對于新節點的插入有如下三個關鍵地方:
(1)插入新節點總是紅色節點 。
(2)如果插入節點的父節點是黑色, 能維持性質 。
(3)如果插入節點的父節點是紅色, 破壞了性質. 故插入算法就是通過重新著色或旋轉, 來維持性質 。
由此得出:只有新插入節點的父節點為紅色節點的時候需要來進行調整。
2、紅黑樹插入
(1)(2)(3)
3、紅黑樹插入的再平衡操作
父節點為紅色節點的場景分析
(1)(2)(3)

刪除

刪除的過程也同插入操作,首先通過二分查找找到對應的節點,刪除后再平衡
1、將紅黑樹當作一顆二叉查找樹,將節點刪除。
(1) 被刪除節點沒有兒子(葉節點),直接將該節點刪除就OK了。
(2) 被刪除節點只有一個兒子,直接刪除該節點,并用該節點的唯一子節點頂替它的位置與被刪節點的父節點相連。
(3) 被刪除節點有兩個兒子,先找出它的后繼節點;然后把“它的后繼節點的內容”復制給“該節點的內容”;之后,刪除“它的后繼節點”。在這里,后繼節點相當于替身,在將后繼節點的內容復制給"被刪除節點"之后,再將后繼節點刪除。這樣就巧妙的將問題轉換為"刪除后繼節點"的情況了,下面就考慮后繼節點。 在"被刪除節點"有兩個非空子節點的情況下,它的后繼節點只可能是沒有兒子的葉節點或者只有一個右兒子。若沒有兒子,則按"情況① "進行處理;若只有一個兒子,則按"情況② "進行處理。
(1)(2)(3)(4)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 樹的概述 樹是一種非常常用的數據結構,樹與前面介紹的線性表,棧,隊列等線性結構不同,樹是一種非線性結構 1.樹的定...
    Jack921閱讀 4,489評論 1 31
  • 0.目錄 1.算法導論的紅黑樹本質上是2-3-4樹 2.紅黑樹的結構和性質 3.紅黑樹的插入 4.紅黑樹的刪除 5...
    王偵閱讀 2,534評論 1 2
  • 1 序 2016年6月25日夜,帝都,天下著大雨,拖著行李箱和同學在校門口照了最后一張合照,搬離寢室打車去了提前租...
    RichardJieChen閱讀 5,165評論 0 12
  • 文/歲月削 [01] 剛來簡書的時候在一次征文活動中認識了一個英語專業的學姐,相比于同年齡段的人,她的語言和思維方...
    歲月削閱讀 773評論 3 7
  • 現實總是令人悲哀,一切都是暫時的,轉瞬即逝,而那逝去的,將變得多么可愛!
    天明已曉閱讀 230評論 0 0