5

私は赤黒木についてのwikiを読んでいました。

誰かが5番目の制限について詳しく説明できますか?

  1. ノードは赤または黒のいずれかです。

  2. 根は黒です。

  3. すべての葉(NIL)は黒です。(すべての葉は根と同じ色です。)

  4. すべての赤いノードの両方の子は黒です。

  5. 特定のノードからその子孫リーフへのすべての単純なパスには、同じ数の黒いノードが含まれています。

挿入の最後のケース(wikiのケース5)が私たちに与えた後の例のRBTの状態を考えると、私はそれを理解するのに苦労しています:

Wiki赤黒木

4と5には、1、2、3よりも1つ多いブラックノードがありませんか?

4

4 に答える 4

5

1、2、3、4、および 5 はすべてサブツリーです。ツリー 1、2、3 のルート ノードの色は黒であることがわかっています。ノード 1 ~ 5 のいずれかがリーフ ノードであるかどうかはわかりません。これは、この挿入ケースが、新しく挿入されたノードの祖父母である N で再帰的に呼び出された可能性があるためです (挿入ケース 3 から)。

回転の前後で、サブツリー 1、2、および 3 はすべて 1 つの黒いノードの下にあり (前に G、後は P)、サブツリー 4 と 5 は 2 つの黒いノードの下にあります (前に G と U、後は P と U)。サブツリー 1、2、および 3 はそれぞれ、サブツリー 4 および 5 よりも 1 つ多い黒いノードを持っています。

于 2013-02-24T14:19:17.380 に答える
1

深読みしたところ、絵に問題があったようです。

N挿入されたばかりのノードであるため、最後のノードの前に子insert[ P1,3] または [2,3] があったことを意味します (挿入は 2 または 1 でした)。その場合、最後の挿入の前にPandUが赤だったに違いありません (そして 4,5 は黒です)。

于 2013-02-24T12:57:36.793 に答える
1

James さん、Wiki のダイアグラムを解読しておめでとうございます。それは間違っていません、ただあいまいです。

このページの「トーク」タブには、「三角形は葉ではなくサブツリーを表すためのものです。一部のサブツリーには、ルートが黒でなければならないことを示すために上部に黒い円があります。」と記載されています。

明らかに、円のない三角形は、ルート ノードの色とツリーの深さが不明な (おそらく関係のない) サブツリー (葉を含む) を表しています。

したがって、これらの図は、「ルール 5」に違反しているかどうかを判断するのに十分な情報を提供していません。そうではないことを当然のこととして受け止めなければなりません。

于 2013-02-24T18:07:33.447 に答える