Ein (Binär)Baum ist eine rekursive Datenstruktur. Bei jedem Knoten des Baums zeigen left
und right
jeweils auf einen weiteren Baum:
Die Blätter des Baums zeichnen sich dadurch aus, dass left
und right
auf null
zeigen, also nicht auf weitere "Unterbäume" verweisen.
Mit diesen Überlegungen kann man sich die folgende Implementation in Java ansehen: https://codeberg.org/qg-info-unterricht/binaerbaum-einstieg
Es gibt nur eine Klasse Binaerbaum
die eigentlich Knotenobjekte darstellt. Der Baum selbst wird repräsentiert durch das Knotenobjekt des Wurzelknotens.
Durch überladen des Konstruktors wird Polymorphie des Konstruktors erzwungen, man kann also verschiedene Knoten erzeugen:
links
und rechts
links
und rechts
wird auf null
gesetzt.
Untersuche die Klasse Binaerbaum
und ihre Methoden im Projekt. Erzeuge mit Hilfe der zur Verfügung stehenden Methoden den in der Abbildung gezeigten Baum mit Integer-Werten:
isBlatt
und verifiziere die Funktionsweise an mehreren Knoten.
Implementiere die Methoden baueBaumTopDown
und baueBaumBottomUp
in der Klasse Zahlenbaum
, so dass der dargestellt Baum aus Integerwerten entsteht.