有効な二分探索木であり、これらの規則のいずれにも違反しない赤黒木があるとします。
- ノードは赤または黒のいずれかです。
- 根元は黒。
- すべての葉 (NIL) は黒です。
- すべての赤のノードの子は両方とも黒です。
- 特定のノードからその子孫の葉のいずれかへのすべての単純なパスには、同じ数の黒いノードが含まれます。
このような赤黒木は次のようになります。
これらの制限を満たす可能性のあるすべてのツリーには、赤黒ツリーが生成されるように一連の挿入と削除がありますか?
赤黒木についてのブログ記事を書くことを考えており、いくつかの例を挙げたいので、この質問をしています。
反例をテストする場合: これは、画像を生成する関数が実装された Python での赤黒ツリーの実装です。
質問を明確にするために:私たちはゲームを作ります。
- すべての制限を満たす赤黒の木を描きます。
- 挿入と削除のシーケンスを見つける必要があるため、最終的に私の赤黒の木になります。
勝てないように赤黒の木を描いてもいいですか?
色は大事!形や色が違う木は、同じ赤黒木ではありません。
少なくとも、これら 2 つの赤黒木を生成する方法を知っている必要があります。
これは、機能するかどうかのチェックにすぎないことに注意してください。この 2 本の赤黒木を入手する方法しか知らないと、この質問には答えられません。