` 紅黑樹一種自平衡二叉查詢樹,是電腦科學中用到的一種資料結構,典型用途是實現關聯陣列。紅黑書很複雜,但是他的操作有良好的最壞情況執行時間,不管是查詢、插入和刪除,他的時間複雜度都是o(logn),其中的n是樹中元素的數目。
` 二叉查詢樹也稱二叉搜尋樹、有序二叉樹(ordered binary tree)、排序二叉樹(sorted binary tree)。是指一顆空樹或者具有以下性質的二叉樹:
(1)若任意節點的左子樹不為空,則左子樹上所有節點的值均小於它根節點的值。
(2)若任意節點的右子樹不為空,則右子樹上所有節點的值均大於它根節點的值。
(3)任意節點的左右子樹也分別為二叉查詢樹
沒有鍵值相等的節點,也就是節點唯一。
` (1)每乙個節點不是黑色就是紅色;
(2)根節點總是黑色的;
(3)每乙個葉子結點都是黑色的空節點(nil節點);
(4)如果乙個節點是紅色的,那麼它的子節點一定是黑色的,反之不成立;
(5)從根節點到任意乙個最底下的子節點,這條路徑中所包含的黑色節點個數必須是相同的,即黑色節點的高度是相同的;
(6)在插入節點時,插入的節點一定是紅色節點。插黑節點一定會衝突,不能保證黑色節點高度一致;但是插入紅色節點,有一半概率會衝突,不能保證紅色節點的子節點是黑色節點。
` (1)變色
父節點為黑,兩個子節點為紅,變色就是將父節點變紅,子節點都變黑。
(2)左旋
(3)右旋
` (1)如果父節點和叔父節點都是紅色,則將父節點以及叔父節點塗黑,將祖父節點塗紅;
(2)如果父節點是紅色且叔父節點是黑色,並且當前結點是右子節點,以當前節點為基準進行左旋;
(3)如果父節點是紅色且叔父節點是黑色,並且當前節點是左子節點,以父節點為基準進行右旋。
如下例子:
二叉查詢樹 紅黑樹
紅黑樹是一棵二叉查詢樹,它在每個結點上增加了乙個儲存位來表示結點的顏色,可以是red或black。通過對任何一條從根到葉子的簡單路徑上各個結點的顏色進行約束,紅黑樹確保沒有一條路徑會比其他路徑長出2倍,因而是近乎於平衡的。樹中每個結點包含5個屬性 color key left right和p。如果乙...
紅黑二叉查詢樹
擷取自 演算法 第四版 紅黑二叉查詢樹背後的基本思想是用標準二叉查詢樹 完全 由2 節點構成 和 一些額外的資訊 替換 3 節點 來表示 2 3樹。紅黑樹中的鏈結分為兩種 1 將兩個2 節點連線起來 構成3 節點的紅鏈結 2 2 3樹中的普通鏈結為黑鏈結 將兩個 2節點用左斜的紅色鏈結鏈起來可表示3...
紅黑二叉查詢樹
三 各種查詢符號表的效能比較 之前所述的 2 3樹 的插入演算法並不難理解,我們要利用名為紅黑二叉查詢樹的簡單資料結構來表達並實現它。最後的 量並不大。紅黑樹背後的思想是用標準的二叉查詢樹 完全由2 結點構成 和一些額外的資訊 替換3 結點 來表示 2 3樹 對於任意的2 3樹,只要對結點進行轉換,...