紅黑樹(red-black tree)是許多「平衡的」查詢樹中一種,它能保證在最壞情況下,基本的動態集合操作的時間為o(lgn)。
紅黑樹是一種二叉查詢樹,但在每個節點上增加乙個儲存位表示節點的顏色,可以是red或black,通過對任何一條從根到葉子節點路徑上各個結點著色方式的限制,紅黑樹確保沒有一條路徑會比其他路徑長出兩倍,因而近乎平衡的。
樹中每個節點包含五個域:color,key,left,right,p。
如果某節點沒有乙個子節點或父節點,則該節點相應的指標域p包含值nil。
將這些nil視為指向二叉查詢樹的外結點(葉子)的指標,而把帶關鍵字的結點視為樹的內結點。
紅黑樹性質:
每個節點或者是紅色的,或者是黑色的。
根節點是黑色的。
每個葉子節點(nil)是黑色的。
如果乙個節點是紅色的,則它的兩個兒子都是黑色的。
對每個節點,從該節點到子孫節點的所有路徑上包含相同數目的黑節點。
黑高度從某個節點x出發(不包含該該節點)到達乙個葉子節點的任意一條路徑上,黑色節點的個數稱為該節點x的黑高度,用bh(x)表示。
從該結點出發的所有下降路徑都具有相同的黑節點個數。
紅黑樹黑高度的定義為其根節點的黑高度。
引理:一顆有n個內結點的紅黑樹的高度至多為2lg(n+1).
以某一節點x為根的子樹中至少包含2^bh(x)-1個內結點.
設h為樹的高度,根據性質4 ,從根節點的任一條簡單路徑上至少有一半的及誒單必是黑色的,根的黑高度至少是h/2;所以,n>=2^h/2-1
因此有:h<=2lg(n+1)
包含n結點的紅黑樹又是高度為o(lgn)的查詢樹,簡單操作的執行時間為o(lgn)。
紅黑樹性質和定義
紅黑樹是每個節點都帶有顏色屬性的二叉查詢樹,顏色或紅色或黑色。在二叉查詢樹強制一般要求以外,對於任何有效的紅黑樹我們增加了如下的額外要求 性質1.節點是紅色或黑色。性質2.根節點是黑色。性質3 每個葉節點 nil節點,空節點 是黑色的。性質4 每個紅色節點的兩個子節點都是黑色。從每個葉子到根的所有路...
紅黑樹的概念和性質
紅黑數的概念 首先,紅黑數是一棵二叉查詢樹 二叉搜尋樹 即所有左孩子都小於根節點,右孩子都大於根節點的樹。其次,紅黑樹是一棵基本平衡的樹。注意這裡的詞語是 基本平衡 平衡二叉樹的概念是,左子樹和右子樹的深度差小於等於1。而紅黑樹並不是嚴格的平衡樹,它只是基本平衡。平衡到什麼程度呢?最大深度小於等於最...
演算法導論 13 1紅黑樹的性質
紅黑樹的性質 1 每個結點或是紅的,或是黑的。2 根節點是黑的。3 每個葉子結點是黑的。4 如果乙個結點是紅的,則它的 5 對每個結點,從該結點到其子孫結點的所有路徑上包含相同數目的黑結點。一顆有n個節點的紅黑樹的高度至少為2lg n 1 練習 13.1 2 對於書上13 1圖中插入36。如果結點顏...