Übung 5: Topdown-234-Baum, Rot-Schwarz-Baum - SSW

Werbung
Übung Praktische Informatik 2
SS 2015
Übung 5: Topdown-234-Baum, Rot-Schwarz-Baum
Abgabetermin: 21.04.2015
Name:
___________________________________________
Gruppe:
Aufgabe
☐ G1 Di 10:15
☐ G2 Di 11:00
Matrikelnummer:
__________________
☐ G3 Di 12:45
Punkte
gelöst
abzugeben
schriftlich
abzugeben
elektronisch
Korr.
Aufgabe 1
6
☐
Zeichnungen
-
☐
Aufgabe 2
6
☐
Zeichnungen
-
☐
Aufgabe 3
12
☐
Java-Programm, Testfälle und
Ergebnisse
Java-Programm, Testfälle
und Ergebnisse
☐
Punkte
Aufgabe 1: Topdown-234-Baum (6 Punkte)
Simulieren Sie das Einfügen der Buchstaben C H R O N O L O G I C (in dieser Reihenfolge) in
einen Topdown­234­Baum. Zeichnen Sie schrittweise den Baum nach jedem eingefügtem
Buchstaben. Wenn Sie beim Einfügen einen Knoten splitten müssen, zeichnen Sie Splitten und
Einfügen als zwei getrennte Schritte. Markieren Sie neu eingefügte Schlüssel durch Einrahmen.
Hinweis: Sortieren Sie Buchstaben, die kleiner als die Wurzel sind, links ein und sortieren Sie
Buchstaben, die größer oder gleich der Wurzel sind, rechts ein.
Abzugeben ist: Zeichnungen
Aufgabe 2: Rot/Schwarz-Baum (6 Punkte)
Simulieren Sie das Einfügen der Buchstaben C H R O N O L O G I C (in dieser Reihenfolge) in
einen Rot­Schwarz­Baum. Zeichnen Sie schrittweise den Baum nach jedem eingefügten
Buchstaben. Wenn Sie beim Einfügen Knoten splitten oder rotieren müssen, zeichnen Sie jeden
Schritt getrennt. Markieren Sie zu rotierende Knoten durch Einrahmen.
Hinweis: Sortieren Sie Buchstaben, die kleiner als die Wurzel sind, links ein und sortieren Sie
Buchstaben, die größer oder gleich der Wurzel sind, rechts ein.
Abzugeben ist: Zeichnungen
Übung Praktische Informatik 2
SS 2015
Aufgabe 3: Einfügen in einen Topdown-234-Baum (12 Punkte)
Implementieren Sie die Einfügemethode eines Topdown­234­Baums, der Zeichen speichert.
Verwenden Sie dazu die vorgegebene Klasse Tree234, welche bereits teilweise implementiert ist.
Die Schnittstelle der Klasse Tree234 ist wie folgt:
package at.jku.students;
public class Tree234 {
private TreeNode234 root;
public void insert(char c) { /* TODO your implementation */ }
private void split(TreeNode234 parent, int successorIndex, TreeNode234 splitNode) { ... }
public String makeDot() {
return new DotMakerTree234(root).getDot();
}
}
Benützen Sie die bereits implementierte Methode split. Diese teilt einen Knoten in zwei neue
Knoten auf und fügt den mittleren Wert in den Elternknoten ein. Die neuen Knoten werden
entsprechend mit dem Elternknoten verlinkt. Wenn noch kein Elternknoten existiert, wird ein
neuer erstellt. Verwenden Sie diese Methode um volle Baumknoten während der Suche nach
der richtigen Einfügeposition aufzuteilen.
Schreiben Sie weiters ein ausführbares Programm und überprüfen Sie Ihre Implementierung
mit dem Eingabewort aus Aufgabe 1. Implementierungshinweise:
■ Implementieren Sie die Methode insert rekursiv.
■ Verwenden Sie die Klasse TreeNode234 aus der Vorgabedatei ssw­pi2­ue05.jar für Baumknoten.
■ Verwenden Sie die vorgegebene und teilweise implementierte Klasse Tree234 von der Übungs­Website.
■ Verwenden Sie die Methode Tree234.makeDot(), um den 234­Baum mittels GraphViz zu visualisieren.
Abzugeben ist: Java­Code, Testergebnisse (ausgedruckt und elektronisch)
Herunterladen