Netzwerk binärer Suchbäume mit Vererbung und Polymorphismus

Python Hard classes

Aufgabe «Netzwerk binärer Suchbäume mit Vererbung und Polymorphismus»

Implementieren Sie die Klasse Node für einen Knoten eines binären Suchbaums (BST) mit den Methoden insert, search, delete. Erstellen Sie die Klasse BST, die die Wurzel speichert und die Methoden insert (Wert hinzufügen), search (Wert suchen, gibt True/False zurück), delete (Wert löschen) und get_height (Baumhöhe) enthält. Erstellen Sie dann die Klasse AVLTree, die von BST erbt und insert sowie delete zur Unterstützung der Balancierung (mit Rotationen) überschreibt. Eingabedaten: eine Folge von Befehlen. Befehle: "insert x" fügt x hinzu, "delete x" löscht x (falls vorhanden), "search x" gibt "found" oder "not found" aus, "height" gibt die Baumhöhe aus. Für AVLTree wird nach jeder Einfügung/Löschung die Balance überprüft (Höhenunterschied der Teilbäume <= 1) und die entsprechende Rotation durchgeführt. Einschränkungen: -10^9 <= x <= 10^9, Anzahl der Befehle bis zu 10^5.

Eingabeformat

Erste Zeile: eine ganze Zahl n (1 <= n <= 10^5) — die Anzahl der Befehle. Dann n Zeilen, jede enthält einen Befehl: insert x, delete x, search x oder height.

Ausgabeformat

Geben Sie für jeden Befehl search "found" oder "not found" in einer separaten Zeile aus. Geben Sie für den Befehl height eine ganze Zahl aus — die Höhe des Baums (Höhe eines leeren Baums = 0).

Beispiele

Beispiel 1

EINGABE
3 1 2 -3 4 -1 -2 5 0 3
AUSGABE

Beispiel 2

EINGABE
2 0 0 0 2 -2 2 -2
AUSGABE
main.py