Lösung von Aufgabe 6
- Die Höhe eines Baumes wird natürlich rekursiv
bestimmt: Ein leerer Baum hat die Höhe 0, ansonsten ist die Höhe eines
Baumes um eins größer als das Maximum der Höhe seiner Kinder.
- Die Ausgaberoutine kann man wie in Aufgabe 5 gestalten. Hier wird noch der
Elternknoten zwischen den beiden Kindern ausgegeben, um die
Baumstruktur deutlicher zu machen. An dieser Stelle wäre es sicher
sinnvoll, eine graphische Ausgaberoutine für einen Baum zu
programmieren.
- Die neuen Methoden in Baum
und AVLBaum sind identisch, es sollte sich
also doch irgendwie mit Vererbung die Verdoppelung verhindern lassen.
Das ist aber nicht ganz einfach: Man kann ja leicht AVLKnoten als Kind von BaumKnoten
implementieren. Der Versuch, AVLBaum als Kind
von Baum zu schreiben, scheitert aber daran,
dass die Knoten-Typen von AVLBaum nicht mehr
passen.
- Um die immer gleichartige Einleseprozedur zu
vereinfachen, wurde mit IOTools eine kleine
Sammlung nützlicher Routinen zusammengestellt, die auch gleich die
Initialisierung des Inputstreams übernimmt.
-
Sourcen:
- als lauffähiges Applet