[解決済み】2-3-4ツリーを赤黒いツリーに変換する
2022-02-11 09:04:57
質問内容
javaで2-3-4ツリーを赤黒ツリーに変換しようとしているのですが、うまくいきません。
問題をわかりやすくするために、この2つの基本クラスを以下のように書きましたが、これからどうすればいいのかがわかりません。
public class TwoThreeFour<K> {
public List<K> keys;
public List<TwoThreeFour<K>> children;
}
public class RedBlack<K> {
public K key;
public boolean isBlack;
public RedBlack<K> left,right;
public RedBlack<K key, boolean isBlack, RedBlack<K> left, RedBlack<K> right){
this.key = key; this.isBlack = isBlack; this.left = left; this.right = right;
}
}
2-3-4ツリーが有効であると仮定して、メソッドが呼ばれたときに赤黒いツリーを返したいのです。
以下のコードも試しましたが、うまくいきません。
public convert(TwoThreeFour<K> tTF){
if (ttf.keys.size() == 3)
RedBlack<K> node = RedBlack<ttf.keys[1], true, RedBlack<ttf.keys[0], false, /* not sure what to put here for left */, /* not sure what to put here for right */), RedBlack<ttf.keys[2], false, /* not sure what to put here for left */, /* not sure what to put here for right */)
etc. for keys.size() == 2, 1.....
理論的には再帰的でなければならないことは分かっていますが、それを理解するのに苦労しています。何かアイデアはありますか?
どのように解決するのですか?
この3つのルールを考えてみましょう。
- を変換してください。 2ノード の黒ノードに変換する。 赤黒い木
- 任意の変換 3ノード を子ノードと親ノードに変換する。親ノードは 子ノードはそれ自身の2つの子、WとX、またはXとYのいずれかを持ちます。 親ノードは、YかWのどちらか1つの子を持つ。 のうち、どの項目が子になり、どの項目が親になるのか。子アイテムは は赤、親は黒に着色されます。
- 任意の変換 4ノード を親と2人の子にし、最初の の子は自分の子WとXを持ち、2番目の子は子Yを持つ。 とZで構成されています。 黒
これらのルールに従えば、赤黒いルールは自動的に満たされます。以下は、変換を適用した結果のツリー例です。
これでうまくいけばいいのですが。わかりやすく詳しい説明は、Robert Laforeの「Data Structures」の本を参照してください。
関連
-
[解決済み】リンクリストの負の値の数でnegativeCntrを代入する
-
[解決済み】このコンパイルユニットは名前付きモジュールに関連しているため、名前付きパッケージeclipseを宣言する必要があります。
-
[解決済み】代入の左手は必ず変数 CharAt
-
[解決済み】"比較メソッドはその一般契約に違反する!"
-
[解決済み】不正な反射的アクセスとは?
-
[解決済み】「error: '.class' expected」の意味と修正方法について
-
[解決済み】Javaで無限大を実装する方法とは?
-
[解決済み】ソースルート外のJavaファイル intelliJ
-
[解決済み】 executeQuery()でデータ操作文が発行できない。)
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー:'if'のない'else'エラー
-
[解決済み] java.sql.SQLException: ユーザー 'root'@'localhost' (using password: YES) のためのアクセスが拒否されました。
-
[解決済み】Doubleはdereferencedできない?
-
[解決済み】エラー「No enclosing instance of type Foo is accessible」の原因と修正方法について教えてください。
-
[解決済み] 二項演算子「&」のオペランド型がおかしい java
-
[解決済み】java 'jar'が内部コマンドまたは外部コマンドとして認識されない。
-
[解決済み】Javaで文字列をコピーするにはどうしたらいいですか?
-
[解決済み】Javaのswitch文。定数式が必要だが、定数である
-
[解決済み] [Solved] java.lang.NoClassDefFoundError: クラスXXXを初期化できませんでした。
-
[解決済み] テスト