紅黑樹、二叉查找樹

一、紅黑樹Red-black Tree:

` 紅黑樹一種自平衡二叉查找樹,是計算機科學中用到的一種數據結構,典型用途是實現關聯數組。紅黑書很複雜,但是他的操作有良好的最壞情況運行時間,不管是查找、插入和刪除,他的時間複雜度都是O(logn),其中的n是樹中元素的數目。

二、二叉查找樹Binary Search Tree:

` 二叉查找樹也稱二叉搜索樹、有序二叉樹(ordered binary tree)、排序二叉樹(sorted binary tree)。是指一顆空樹或者具有以下性質的二叉樹:
  (1)若任意節點的左子樹不爲空,則左子樹上所有節點的值均小於它根節點的值。
  (2)若任意節點的右子樹不爲空,則右子樹上所有節點的值均大於它根節點的值。
  (3)任意節點的左右子樹也分別爲二叉查找樹
沒有鍵值相等的節點,也就是節點唯一。

三、紅黑樹特徵:

` (1)每一個節點不是黑色就是紅色;
  (2)根節點總是黑色的;
  (3)每一個葉子結點都是黑色的空節點(NIL節點);
  (4)如果一個節點是紅色的,那麼它的子節點一定是黑色的,反之不成立;
  (5)從根節點到任意一個最底下的子節點,這條路徑中所包含的黑色節點個數必須是相同的,即黑色節點的高度是相同的;
  (6)在插入節點時,插入的節點一定是紅色節點。插黑節點一定會衝突,不能保證黑色節點高度一致;但是插入紅色節點,有一半概率會衝突,不能保證紅色節點的子節點是黑色節點。

四、平衡性修正的方法:

` (1)變色
父節點爲黑,兩個子節點爲紅,變色就是將父節點變紅,子節點都變黑。
  (2)左旋
在這裏插入圖片描述
  (3)右旋
在這裏插入圖片描述

五、紅黑樹的自平衡修正規律:

` (1)如果父節點和叔父節點都是紅色,則將父節點以及叔父節點塗黑,將祖父節點塗紅;
  (2)如果父節點是紅色且叔父節點是黑色,並且當前結點是右子節點,以當前節點爲基準進行左旋;
  (3)如果父節點是紅色且叔父節點是黑色,並且當前節點是左子節點,以父節點爲基準進行右旋。
  如下例子:
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章