|
|
|||||||
19.5 Das rekursive Einfügen von Elementen |
|||||||
Rekursives EinfügenWir können den Algorithmus zum rekursiven Einfügen in einen binären Suchbaum erst mal provisorisch formulieren:
20 Flussdiagramm für das rekursive Einfügen Schauen wir uns nun den dazugehörigen Java-Quelltext an:
21 Quelltext: rekursives Einfügen in einen Suchbaum Es soll ein Objekt e der Klasse Element in den Suchbaum eingefügt werden. Entscheidend für das richtige Einfügen ist der Wert des Elementes, der durch die sondierende Methode getValue() geliefert wird. Der eigentliche Inhalt des Elementes ist ja durch Datenkapselung geschützt, nur mit sondierenden Methoden darf auf den Inhalt zugegriffen werden - aber das wissen Sie ja bereits alles. Die Abfrage, ob die Wurzel des Baumes leer ist (siehe Flussdiagramm in Abb. 20), kann hier entfallen. Wir befinden uns in der insert()-Methode der Klasse Element und noch nicht in der insert()-Methode der Klasse Tree. Ein Element ist aber nach seiner Erzeugung nicht mehr leer, sondern hat bereits einen Wert. Allerdings sind die beiden Zeiger left, right "leer", da sie beide den Wert null besitzen. Die insert()-Methode von Element kann also gleich mit der Frage beginnen, ob das neue Element einen kleineren Wert als das bisherige hat. In Zeile 20 wird diese Frage gestellt.
22 Flussdiagramm zum Einfügen eines neuen Elementes, etwas genauer Ist das neue Element kleiner als das alte, so müssen zwei Fälle unterschieden werden: Fall 1 - es gibt noch keinen linken Teilbaum. Fall 2 - es ist ein linker Teilbaum vorhanden. Im ersten Fall ist das Einfügen leicht; der left-Zeiger wird einfach auf das neue Element gesetzt. Dies geschieht in Zeile 22 des Quelltextes. Im zweiten Fall wird rekursiv vorgegangen. Der linke Teilbaum ist ein vollständiger binärer Suchbaum, also wird jetzt einfach die insert()-Methode für diesen Teilbaum aufgerufen, und dann soll der mal zusehen, wie das neue Element untergebracht wird. Ist das neue Element nicht kleiner als das alte, wird analog für den rechten Teilbaum des Elementes vorgegangen (Zeilen 25 - 29). |
Diese Webseite über Bäume wird nicht weiter entwickelt. Statt dessen können Sie die Buchversion des Skriptes gegen gleichwertiges Tauschmaterial oder einen kleinen Unkostenbeitrag Ivon mir erhalten. Den ersten Teil der Folge 19 können Sie hier kostenlos als PDF-Datei herunterladen. Schreiben Sie mir eine E-Mail, wenn Sie Interesse haben. Abiturienten NRWGehen Sie bitte auch auf die "offizielle" BinTree-Seite! |
||||||
Die drei folgenden Aufgaben sind alternativ. Die eine ist mehr für die Programmier-Spezialisten, die zweite mehr für die Informatik-Spezialisten unter Ihnen. Wer Abitur im Fach Informatik machen möchte, sollte die Übung 19.8-B bearbeiten. Wer sich weder A noch von B zutraut, kann sich an der leichteren Aufgabe C versuchen.
|
Diese Webseite über Bäume wird nicht weiter entwickelt. Statt dessen können Sie die Buchversion des Skriptes gegen gleichwertiges Tauschmaterial oder einen kleinen Unkostenbeitrag Ivon mir erhalten. Schreiben Sie mir eine E-Mail, wenn Sie Interesse haben. Die Lösungen zu den Übungen finden Sie in dem Lehrerband, den ich zur Zeit erarbeite. |
||||||
Lösungshinweise zu allen Übungen der Buchversion finden Sie in dem Lehrerband, den Sie von mir gegen einen kleinen Unkostenbeitrag erhalten können. Die Übungen der Buchversion unterscheiden sich teils erheblich von den hier veröffentlichen Übungen. Das liegt daran, dass ich die Folge 19 für die Buchversion völlig überarbeitet habe. Sehr schwere Aufgaben sind ganz herausgenommen worden, einige Aufgaben sind umformuliert worden, bei einigen Aufgaben wurde das Bewertungsschema angepasst, weil ich nämlich beim Lösen erst selbst gemerkt habe, wie schwer manche Aufgaben in Wirklichkeit sind, und einige Aufgaben sind auch ganz neu dazugekommen. |
|||||||
und weiter mit Folge 19 - Binärbäume, Teil 5 |
|||||||
|
Diese HTML-Seite wurde erstellt von Ulrich Helmich am 19. April 2006 |
|||||||