在二叉搜尋樹(bst)的基礎上,要實現一顆平衡樹,可以使用2-3樹的方式,2-3樹的直接實現,相對比較複雜
,因此演算法的研究者們提出了紅-黑樹的實現方式。
package com.test;
public class redblacktree, value> }
private boolean isred(node x)
private node rotateleft(node h)
private node rotateright(node h)
private void flipcolors(node h)
public void put(key key, value val)
private node put(node h, key key, value val)
int cmp = key.compareto(h.key);
if (cmp < 0) else if (cmp > 0) else
if (isred(h.right) && !isred(h.left)) h = rotateleft(h);
if (isred(h.left) && isred(h.left.left)) h = rotateright(h);
if (isred(h.left) && isred(h.right)) flipcolors(h);
return h; }
public value get(key key) else if (cmp > 0) else
} return null;
}}
平衡搜尋樹 紅黑樹RBTree
紅黑樹 紅黑樹是一顆二叉搜尋樹,它在每乙個節點上增加了乙個儲存位來表示節點的顏色,可以是red或是black。通過對任何一條從根到葉子簡單路徑上的顏色的約束,紅黑樹保證最長路徑不超過最短路徑的兩倍,因而近似平衡。紅黑樹的性質 每個節點,不是紅色就是黑色 根節點是黑色 如果乙個節點是紅色的,那麼它的子...
紅黑樹下 紅黑樹的實現
1.實現紅黑樹的基本思想 實際上,紅黑樹是有固定的平衡過程的 遇到什麼樣的節點分布,我們就對應怎麼去調整。只要按照這些固定的調整規則來操作,就能將乙個非平衡的紅黑樹調整成平衡的。首先,我們需要再來看一下紅黑樹的定義 在插入 刪除節點的過程中,第 三 四點要求可能會被破壞,所以 平衡調整 實際上就是把...
紅黑樹下 紅黑樹的實現
1.實現紅黑樹的基本思想 實際上,紅黑樹是有固定的平衡過程的 遇到什麼樣的節點分布,我們就對應怎麼去調整。只要按照這些固定的調整規則來操作,就能將乙個非平衡的紅黑樹調整成平衡的。首先,我們需要再來看一下紅黑樹的定義 在插入 刪除節點的過程中,第 三 四點要求可能會被破壞,所以 平衡調整 實際上就是把...