Algorithmen und Datenstrukturen Fachhochschule Wiesbaden
Sommersemester 2007 Prof. Dr. Steffen Reith
8. ¨ Ubungsblatt
Aufgabe 1 (L¨osung wird abgenommen) (B¨aume) Zur vollst¨andigen Bearbeitung dieser Aufgabe sind die folgenden Punkte zu be- arbeiten:
• Implementieren Sie den abstrakten Datentyp einesbin¨aren (Such)Baums in JAVA mit Hilfe von Generics als eigene Klasse. Zu implementieren sind die Methoden insert, PrintTreeInorder, getHeight und isEmpty.
Beispiel f¨ur die Schnittstelle:
public interface Tree<E>
{
// F¨uge den Schl¨ussel x in den Baum ein public boolean insert(E x);
// Gebe alle Schl¨ussel gemaess inorder-Traversierung aus public void printTreeInorder();
// Berechne die H¨ohe des Baums public long getHeight();
// Teste ob Baum leer public boolean isEmpty();
};
public class NodeTree<N> implements Tree<N> { private class Node<E>{.... Analog ¨Ubung 7 ...}
// Rest der Implementierung }
Die MethodeprintTreeInordergibt alle Elemente des Baums gem¨aß Inorder- Traversierung aus. Sie k¨onnen davon ausgehen, dass sich der DatentypT mit den ¨ublichen Methoden ausgeben l¨asst.
• Erweitern Sie Ihren generischen Datentyp Tree um die Methode merge- Inorder(Tree<E> tree), die alle Elemente aus dem Baum tree gem¨aß Inorder-Traversierung in den aktuellen Baum einf¨ugt.
• Schreiben Sie ein Testprogramm mit zweiint-B¨aument1undt2, die mit je 100 Zufallszahlen bef¨ullt werden, wobei die Zufallszahlen f¨urt1 aus dem In- tervall [1, . . . ,1000] stammen und die f¨urt2aus dem Intervall [1001, . . . ,2000].
Danach soll Ihr Testprogramm die H¨ohen vont1undt2ausgeben. Nun ver- schmelzen Siet1mitt2unter Benutzung vonmergeInorder(t2)und geben die H¨ohe des verschmolzenen Baums aus.
– Wie erkl¨aren Sie das Ergebnis der verh¨altnism¨assig großen H¨ohe des verschmolzenen Baums?
– Planen (Pseudocode notwendig!) und implementieren Sie eine mitmerge- Inordervergleichbare Methode, die einen Baum mit deutlich kleinerer H¨ohe liefert (Hinweis: ¨Uberlegen Sie sich eine geeignete Traversierungs- strategie f¨ur Ihre merge-Methode).
Die Abnahme erfolgt in der KW 22 vom 28.5.2007 - 01.6.2007 in den jewei- ligen ¨Ubungsgruppen
Ubungsaufgaben ¨
• Richtig oder falsch:
– Mergesort hat immer eine Laufzeit von O(nlogn).
– Insertion Sort hat immer eine Laufzeit vonO(nlogn).
– Es gibt Sortierverfahren mit einer Laufzeit von O(logn).
• Geben Sie die Laufzeit von Insertion Sort an und begr¨unden Sie Ihre Antwort fundiert.
• Gegeben sei T(n) = 3·T(n/3) +n undT(1) = 0. Bestimmen Sie eine Funktionf, so dass T(n) =f(n). Dabei darf T nicht in der Beschreibung von f vorkommen.
• Kann man in einer linearen Liste effizient mit der bin¨aren Suche arbeiten? Be- gr¨unden Sie Ihre Antwort!
2