2

私が理解したように、赤黒ツリーで新しいノードを挿入すると、途中で 2 つの赤い子を持つ黒いノードに遭遇したときに、色を反転する必要があります。つまり、親を赤にし、その 2子供たちは黒です(根元を除く)。

ウィキペディアでこんな写真を見ました。

ここに画像の説明を入力

なぜ 8 と 17 は黒ではないのですか?

また、Lafore の「Data Structures and Algorithms in Java」から引用したアプレットもチェックインします。同じこと、これらのノードは黒くなります。

この赤黒木には複数のバージョンがありますか?

4

1 に答える 1

2

これらのノードを黒くすることは実際にはかなり可能です。結果のツリーが赤/黒ツリーの構造上の制約に従うように、ツリーのノードに色を付ける方法はいくつかあります。たとえば、完全な二分木は、すべてのノードが黒になるように色付けすることも、行を赤と黒の間で交互に配置することもできます。

赤/黒のツリーでノードの色を変更したり回転させたりするための特定のルールは、可能な唯一のルールではありません。それらはたまたま正しく効率的に機能するものにすぎません。原則として、ツリーの色と回転を異なる方法で変更することができます。これにより、同じノードを持つツリーの色や形が異なる可能性があります。

お役に立てれば!

于 2013-03-23T17:57:30.183 に答える