1、概念和特色 spa
紅黑數(Red-black tree)是一種自動平衡的二叉查找樹,又稱對稱二叉樹。blog
紅黑樹是每一個節點都帶有顏色屬性的二叉查找樹,顏色爲紅色或黑色。排序
回顧二叉查找樹的知識:二叉查找樹(Binary Search Tree),也稱爲二叉搜索樹、有序二叉樹(ordered binary tree)或者排序二叉樹(sorted binary tree)。ip
二叉查找樹(BST)的特色:get
1.若任意節點的左子樹不爲空,則左子樹上全部節點的值均小於它的根節點的值it
2.若任意節點的右子樹不爲空,則右子樹上全部節點的值均大於它的根節點的值io
3.任意節點的左、右子樹也分別爲二叉查找樹二叉樹
4.沒有鍵值相等的節點搜索
回顧平衡二叉樹的知識:im
除了二叉樹查找樹(BST)的特色之外,
它還包含如下幾個特色:
1.節點是紅色或者黑色
2.根節點必定是黑色的
3.葉子節點是黑色的(NIL)[nil 節點就是空節點,在紅黑樹的實現中,nil 節點代替二叉樹中的 NULL]
4.若是一個節點是紅色的,則它的子節點必須是黑色的
5.從任一節點到其每一個葉子的全部簡單路徑都包含相同數目的黑色節點
2、紅黑樹的自動平衡修正
1.術語
外側子孫節點:若某節點相對位置與其父節點的相對位置相同,則該節點是外側子孫節點。
12在18的左側,而它的父節點18也在25的左側,所以12是25的外側子孫節點
內側子孫節點:當某個節點的相對位置與其父節點的相對位置不一樣,則該節點是內側子孫節點
22在18的右側,而它的父節點在25的左側,所以該節點是內側子孫節點
3、手撕代碼