Nehmen wir die folgende Definition eines rot-schwarzen Baums an:
- Es ist ein binärer Suchbaum.
- Jeder Knoten ist entweder rot oder schwarz gefärbt. Die Wurzel ist schwarz.
- Zwei durch eine Kante verbundene Knoten können nicht gleichzeitig rot sein.
- Hier sollte eine gute Definition eines NIL-Blattes sein, wie im Wiki. Das NIL-Blatt ist schwarz gefärbt.
- Ein Pfad von der Wurzel zu einem beliebigen NIL-Blatt enthält die gleiche Anzahl schwarzer Knoten.
Frage
Angenommen, Sie haben die Operationen insert
und delete
für den rot-schwarzen Baum implementiert . Wenn Sie nun einen gültigen rot-schwarzen Baum erhalten, gibt es immer eine Folge von insert
und delete
Operationen, die ihn aufbauen?
Motivation
Diese Frage wird durch diese Frage und die Diskussion aus dieser Frage motiviert .
Persönlich glaube ich, dass, wenn Sie sich einen gültigen rot-schwarzen Baum vorstellen, der nur aus schwarzen Knoten besteht (was impliziert, dass Sie sich einen perfekt ausbalancierten Baum vorstellen), es eine Folge von insert
und delete
Operationen gibt, die ihn aufbauen. Jedoch,
- Ich weiß nicht, wie ich das genau beweisen soll
- Ich interessiere mich auch für den allgemeineren Fall
insert
und delete
einen gültigen rot-schwarzen Baum erstellt, der nur aus schwarzen Knoten besteht . Es verwendet Einfügungen / Löschungen, um einen Baum der Höhe zu erstellen . Zuerst können wir mit Einfügungen einen perfekt ausbalancierten rot-schwarzen Baum in der Breite zuerst erstellen , dann mit -Einfügungen und der gleichen Anzahl von Löschungen, in die er neu gestrichen wird ein ganz schwarzer Baum. Der Trick dabei ist, mal die unterste rote Schicht des Baumes nach oben zu schieben, bis sie die Wurzel erreicht. h 2 h + 1 - 1 h ∗ 2 h - 1 h
insert
und delete
Operationen zu konstruieren ?
insert
und ab delete
. Für diese Vorgänge gibt es möglicherweise mehrere Möglichkeiten. b) Da RB-Bäume im Wesentlichen B-Bäume der Ordnung 4 sind, kann man dort nach Inspiration suchen. Die Details können sich als schwierig erweisen, da die Zuordnung von RB zu B (und / oder umgekehrt) nicht eindeutig ist.