Informatik Bachelor 1. Semester WS 2014/15 Prof. Dr. Wolfgang Schramm Algorithmen und Datenstrukturen (ADS)
Übungsblatt 6 Ausgabe: 12.12.2014 1
Übungsblatt 6
Ausgabe: 12.12.2014Abgabe: 9.01.2015
Hinweise: -‐ Die Abnahme der Übungen gilt als Prüfungsleistung. Bei einer Verhinderung durch Krankheit ist eine ärztliche Bescheinigung der Arbeitsunfähigkeit vorzu-‐
legen.
-‐ Zur Abnahme müssen die Ergebnisse (Pseudocode, Stichpunkte) – soweit nichts anderes angegeben ist – schriftlich (ausgedruckt) vorliegen.
Aufgabe 1: ADT Binärbaum – Programmieraufgabe 80 Punkte
Der in der Vorlesung vorgestellte ADT BinaryTree (binärer Suchbaum) stellt über ein Interface die folgende Funktionalität zur Verfügung:
• boolean insert (int val) Fügt val in den Baum ein.
• boolean insert (String filename)
Fügt die int-‐Werte, die in der Datei stehen in den Baum ein.
• boolean contains(int val) Testet, ob val im Baum vorhanden ist.
• int size() Ermittelt die Anzahl der Knoten im Baum.
• int height() Ermittelt die Höhe des Baums.
• int getMax() Liefert das größte Element im Baum.
• int getMin() Liefert das kleinste Element im Baum.
• boolean remove (int val) Entfernt val aus dem Baum.
• booelan isEmpty() true genau dann, wenn der Baum leer ist.
• addAll(BinaryTree otherTree)
Fügt alle Elemente des übergebenen Baums (otherTree) in den aktuellen Baum ein.
Legen Sie fest (und beschreiben Sie im Kommentar), welche Ergebnisse herauskommen.
Ausgabe der Werte im Baum in der jeweiligen Reihenfolge:
• void printInorder()
• void printPostorder()
• void printPreorder()
• void printLevelorder()
Implementieren Sie in der Klasse MyBinaryTree die Funktionen des Interface und zusätz-‐
lich noch die folgende statische Methode:
Übungsblatt Ausgabe: 12.12.2014
2
• BinaryTree empty () Erzeugt einen leeren neuen Baum.
Um das Testen zu erleichtern, ist die Methode boolean insert (String filena- me)vorgesehen. Dabei werden alle Werte auf der Datei in den Baum eingefügt.
Wenn sie die Einfügeoperation boolean insert (int val) rekursiv implementieren, erhalten Sie 15 Zusatzpunkte.
20 weitere Zusatzpunkte erhalten Sie, wenn Sie die Methode clone für die Erstellung einer tiefen Kopie des Binärbaums implementieren.
Schreiben Sie, ähnlich wie bei Aufgabe 1 in Übungsblatt 5 ein Rahmenprogramm, das es er-‐
möglicht, über ein geeignetes Menü die einzelnen Operationen auszuführen.
Gehen Sie so vor, dass Sie zuerst die Methode boolean insert (int val) implementie-‐
ren und dann die Methoden zur Ausgabe der Werte des Baums. Dann lassen sich die restli-‐
chen Methoden einfacher testen.