Universität Ulm - Abteilung Angewandte Informationsverarbeitung

 


9. Übungsblatt zur Vorlesung Allgemeine Informatik II


Abgabetermin: 11. Juli 2002



Aufgabe 1:    Ihr bester Freund!     (10 Punkte + 5 Zusatzpunkte)



Ihr bester Freund ist Leiter einer Firma und speichert die Gehaltsvorstellungen seiner Mitarbeiter in einem Binarbäum ab. Den Inhalt des Rootknotens legt er dabei selber fest, da dies seine persönliche Schmerzgrenze darstellt. Gehaltsvorstellungen die größer sind als die Schmerzgrenze kommen auf die rechte Seite, Gehaltsvorstellungen die kleiner gleich der Schmerzgrenze sind auf die linke Seite. Jeder Mitarbeiter der mit seinen Gehaltsvorstellungen auf der rechten Seite des Baumes steht bekommt einen Rüffel. Der Mitarbeiter mit den höchsten Gehaltsvorstellungen wird sofort entlassen, derjenige mit den niedrigsten Vorstellungen ebenfalls, da weder Wahnsinnige noch schlaffe kuschende Gurken in der Firma erwünscht sind!


Gut, soweit die Tatsachen. Ihr Freund möchte nun die schlaffe Gurke und den Wahnsinnigen aus dem Baum entfernen (Zusatzaufgabe) und anschließend berechnen, wie hoch die Gehaltsvorstellungen aller Mitarbeiter zusammen sind (also alle Knoteninhalte addieren, außer den Inhalt vom Rootknoten)! So kann er festestellen, ob diese Vorstellungen mit seinem Budget vereinbar sind!



Teilaufgabe a:    (5 Punkte)


Erstellt zunächst ein Programm mit einer Prozedur Init für die Initialisierung, einer Prozedur Insert zum Einfügen der Gehaltsvorstellungen und einer Prozedur PrintTree zur Ausgabe des Baumes. Dabei sollen die Gehaltsvorstellungen von der Tastatur - wie im folgenden Beispiel dargestellt - eingelesen werden können.

Geben Sie die Schmerzgrenze ein? 6300

Wieviele Gehaelter wollen sie eingeben? 4

Ihre 1. Gehaltsvorstellung? 7600

Ihre 2. Gehaltsvorstellung? 3500

Ihre 3. Gehaltsvorstellung? 4500

Ihre 4. Gehaltsvorstellung? 8798

3500 4500 6300 7600 8798



Teilaufgabe b:    (5 Punkte)


Erweitert nun Euer Programm so, daß zusätzlich auch die Summe aller Knoten ausgegeben wird (Merke: Hier könnte man auch auf einfache Art und Weise die Anzahl der Knoten feststellen, da ja jeder Knoten ,,angefaßt`` werden muß)! Ist dies geschafft, so müßt Ihr zum Schluß nur noch den Betrag der Schmerzgrenze von den Gesamtgehaltsvorstellungen abziehen! Fertig!

Geben Sie die Schmerzgrenze ein? 6300

Wieviele Gehaelter wollen sie eingeben? 4

Ihre 1. Gehaltsvorstellung? 7600

Ihre 2. Gehaltsvorstellung? 3500

Ihre 3. Gehaltsvorstellung? 4500

Ihre 4. Gehaltsvorstellung? 8798

3500 4500 6300 7600 8798

Die Summer der Inhalte aller Knoten ist 30698!
Die Summe aller Gehaltsvorstellungen ist 24398!



Zusatzaufgabe:    (5 Punkte)


Wie bereits gesagt: Der Chef steht weder auf Wahnsinnige noch auf schlaffe Gurken. Also sucht den Knoten der ganz links im Baum bzw. ganz rechts im Baum steht, löscht diese beiden Knoten aus dem Baum und bildet dann die Summe der Gehaltsvorstellungen!



Aufgabe 2:    Ihr schönster Baum!     (5 Punkte)


Ihr schönster Baum ist leider doch noch nicht so ganz der Schönste...  ...er ist nämlich nicht ausgeglichen und hängt etwas in der Luft, wie Abbildung 1 zeigt!



Teilaufgabe a:    (3 Punkte)


Hängt nun einen Teilbaum, bestehend aus mind. 2 Knoten so um, daß der Baum höhen- bzw. gewichtsausgeglichen ist (und Ihr schönster Baum wird). Ist dies überhaupt möglich bzw. wieviele Teilbäumene müssen umgehängt werden, damit Höhen- bzw. Gewichtsausgeglichenheit erreicht wird?



Teilaufgabe b:    (2 Punkte)


Erweitert den ursprünglichen Baum so, daß der Baum durch Hinzufügen von möglichst wenig Knoten wiederum zum schönsten Baum wird, also höhen- bzw. gewichtsausgeglichen ist!


Abbildung: Ihr schönster Baum
\includegraphics[scale=0.22]{Baum1}



Viel Erfolg!



Hans Braxmeier