06. ¨Ubung zu ” Informatik II“ im SS 11

Werbung
Praktische Informatik in der Wirtschaft
Westfälische Wilhelms-Universität Münster
Prof. Dr. Herbert Kuchen
19. Mai 2011
06. Übung zu Informatik II“ im SS 11
” Mai 2011, 10 00 Uhr.
Abgabe: 26.
Aufgabe 14
(5 Punkte)
In einem Binärbaum ist die Höhe eines Knotens definiert als sein Abstand zur untersten Ebene, Blätter haben also die Höhe 0. Beweisen Sie, dass in einem vollständigen
Binärbaum der Höhe h mit n = 2h+1 − 1 Knoten die Summe der Höhen aller Knoten
den Wert sh = n − (h + 1) hat!
Aufgabe 15
(7 Punkte)
Fügen Sie in einen anfangs leeren AVL-Baum die Schlüssel 2, 1, 6, 5, 4, 3, 7 ein und
löschen Sie danach die Schlüssel 2, 4, 1! Skizzieren Sie den Baum nach jeder Einfügeund Löschoperation!
Aufgabe 16
(14 + 4 = 18 Punkte)
a) Implementieren Sie eine Klasse Menge zur Repräsentation von (mathematischen)
Mengen! Elemente dürfen dabei nicht mehrfach in einer Menge vorkommen. Vervollständigen Sie dazu den folgenden Klassenrumpf:
public class Menge<T extends Comparable<T>> {
private int anzahlElemente;
// Konstruktor transformiert ein Array in eine Menge.
// Wird null übergeben, so wird die leere Menge erzeugt.
public Menge(T[] a) {
...
}
public Menge<T> vereinigung(Menge<T> M) {
...
}
// this - M
public Menge<T> differenz(Menge<T> M) {
...
}
public Menge<T> durchscnitt(Menge<T> M) {
...
}
public T[] toArray(Class<T> clazz) {
T[] array = (T[])Array.newInstance(clazz, anzahlElemente);
// hier array mit Elementen füllen!
return array;
}
}
1
Verwenden Sie zum Speichern der Elemente nur die aus der Vorlesung bekannten Datenstrukturen. Es ist nicht erlaubt, eine der SetImplementierenden Klassen aus dem Java-API zu verwenden.
Hinweise:
• Der Durchschnitt (Schnittmenge) von zwei Mengen lässt sich auch mit der
Vereinigung und der Differenz berechnen.
• Die Methoden vereinigung, differenz und durchschnitt arbeiten
nicht in-place, d.h. es muss ein neues Objekt vom Typ Menge zurückgegeben
werden, außerdem
• dürfen diese Methoden die Ursprungsmengen nicht modifizieren.
• anzahlElemente soll die Anzahl der Elemente in der Menge speichern.
• Die Methode toArray dient zu Testzwecken, implementieren Sie diese also
auf jeden Fall!
• Die Erzeugung eines generischen Arrays in der Methode toArray erzeugt
eine Compiler-Warnung wegen dem cast nach T[]. Diese können Sie in diesem
Fall ignorieren.
b) Welche Laufzeit (in O-Notation) haben die von Ihnen implementierten Methoden
vereinigung, differenz und durchschnitt? Begründen Sie ihre Antwort!
Bitte reichen Sie das Ergebnis Ihrer Programmierarbeit über die Web-Plattform EASy
ein!
Anmerkung: Versehen Sie Ihre Abgaben bitte mit Namen, Matrikelnummern, E-MailAdressen und Studiengängen der beteiligten Bearbeiter und werfen Sie diese in schriftlicher Form in die Abgabefächer Ihrer jeweiligen Übungsgruppenleiter. Die Abgabefächer
befinden sich im Mathe-Gebäude direkt gegenüber des Hörsaals M3. Pro Abgabe dürfen
maximal 3 Bearbeiter an der Lösung der Aufgaben beteiligt sein.
Bei Fragen zum Übungsbetrieb wenden Sie sich bitte an Ihren Übungsgruppenleiter oder
an Steffen Ernsting.
2
Herunterladen