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 C mit Hilfe von templates als eigene Klasse. Zu implementieren sind die Methoden insert, PrintTreeInorder, getHeight und isEmpty.
EinBeispiel f¨ur die Schnittstelle:
#ifndef TREEH
#define TREEH template <class T>
class Node {
private:
// Zeiger auf linken und rechten Teilbaum // Daten
public:
// Zugriffsmethoden Zeiger und Daten };
template <class T>
class Tree {
private:
// Wurzel des Bin¨arbaums Node<T> *root;
// Aktuelle Anzahl der Knoten im Baum unsigned long numKnots;
public:
// Konstruktor Tree();
// Destruktor
~Tree();
// F¨uge den Schl¨ussel x in den Baum ein bool insert(T x);
// Gebe alle Schl¨ussel gem¨aß inorder-Traversierung aus void printTreeInorder(void);
// Berechne die H¨ohe des Baums unsigned long getHeight();
// Teste ob Baum leer bool isEmpty();
};
#endif /* TREEH */
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. D.h. die Methode mergeInorderbesucht (Inorder!) alle Knoten von treeund f¨ugt sie in den aktuellen Baum ein.
• 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 24 vom 11.6.2007 - 15.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!