赤黒木をやってみよう

 

赤黒木のルールは

  1. ルートは常に黒
  2. 新ノードは赤で右に追加
  3. 右下の子だけが赤の時左回り
  4. 両方の子が赤の時上下の色を変える

f:id:yamshing:20150624213924p:plain

まずはルートに2を挿入

右下が赤なので左回り。

f:id:yamshing:20150624214038p:plain

ルートは黒に

f:id:yamshing:20150624214110p:plain

次のノードを挿入

f:id:yamshing:20150624214147p:plain

両方の子が赤なので色を交換

f:id:yamshing:20150624214234p:plain

ルートは黒に

f:id:yamshing:20150624214303p:plain

ノードを追加

f:id:yamshing:20150624214411p:plain

右下が赤なので左回り。

f:id:yamshing:20150624214543p:plain

ノード追加

f:id:yamshing:20150624214616p:plain

両方の子が赤なので色を交換

 

f:id:yamshing:20150624214707p:plain

4が右下の赤になるので左回り

 

f:id:yamshing:20150624214802p:plain

ノード追加

 

f:id:yamshing:20150624214840p:plain

右下の赤は左回り

f:id:yamshing:20150624214916p:plain

ノード追加

f:id:yamshing:20150624215003p:plain

両方の子が赤なら色をひっくり返す。

f:id:yamshing:20150624215044p:plain

もう一回

ひっくり返す。

f:id:yamshing:20150624215146p:plain

ルートは黒

f:id:yamshing:20150624215558p:plain