Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Löschen im Suchbaum.

Ähnliche Präsentationen


Präsentation zum Thema: "Löschen im Suchbaum."—  Präsentation transkript:

1 Löschen im Suchbaum

2 Der rechte Teilbaum ist leer
25 14 14 3 19 A 3 A 19 8 15 A A 8 15 A A A A A A A A A Wir wollen die 25 löschen. Dazu entfernen wir die 25 und ihren leeren rechten Teilbaum. Anschließend verschieben wir den ursprünglichen linken Teilbaum an die Stelle der 25.

3 Der linke Teilbaum ist leer
42 25 35 A 42 66 28 A 57 35 66 71 A A 28 A A A 57 A 71 A A A A A A A Wir wollen die 25 löschen. Dazu entfernen wir die 25 und ihren leeren linken Teilbaum. Anschließend verschieben wir den ursprünglichen rechten Teilbaum an die Stelle der 25.

4 Beide Teilbäume sind nicht leer
19 25 14 42 3 19 15 19 35 66 A 8 15 A A A 28 A 57 71 A A A A A A A A A A Wir wollen die 25 löschen. Dazu suchen wir das Maximum im linken Teilbaum. Wir ersetzen die 25 durch dieses Maximum. Das Maximum wird nun aus dem linken Teilbaum gelöscht. Der ursprüngliche linke Teilbaum des Maximums rückt auf.

5 Die Methode gibMaximum ()
public Eintrag gibMaximum () { if (rechterNachfolger instanceof Abschluss) return inhalt; } else return rechterNachfolger.gibMaximum (); Wenn mein rechter Nachfolger ein Abschluss ist, dann ist mein Inhalt maximal in meinem Teilbaum. Andernfalls befindet sich der maximale Inhalt im Teilbaum meines rechten Nachfolgers.

6 Die Methode loescheMaximum ()
public Baumelement loescheMaximum () { if (rechterNachfolger instanceof Abschluss) return linkerNachfolger; } else rechterNachfolger = rechterNachfolger.loescheMaximum (); return this; Wenn mein rechter Nachfolger ein Abschluss ist, dann ist mein Inhalt maximal in meinem Teilbaum. Ich lösche mich, indem ich meinen linken Nachfolger an meine Stelle aufrücken lasse. Andernfalls befindet sich der zu löschende maximale Inhalt im Teilbaum meines rechten Nachfolgers.

7 Auszug der Methode loesche (), Teil 1
if (inhalt.vergleicheMit (suchwort) == 0) { inhalt.macheUnsichtbar (); if (linkerNachfolger instanceof Abschluss) rechterNachfolger.zeichneNeu (baumposition); return rechterNachfolger; } else if (rechterNachfolger instanceof Abschluss) linkerNachfolger.zeichneNeu (baumposition); return linkerNachfolger; Wenn mein linker Nachfolger ein Abschluss ist, dann lösche ich mich, indem ich meinen rechten Nachfolger an meine Stelle aufrücken lasse. Außerdem zeichne ich den Teilbaum meines rechten Nachfolgers an meine ursprünglichen Baumposition. Analog handle ich, wenn mein rechter Nachfolger ein Abschluss ist.

8 Auszug der Methode loesche (), Teil 2
else // d. h., wenn beide Teilbäume nicht leer sind. { inhalt = linkerNachfolger.gibMaximum (); linkerNachfolger = linkerNachfolger.loescheMaximum (); zeichneNeu (baumposition); return this; } Wenn beide Teilbäume nicht leer sind, ersetze ich meinen Inhalt durch das Maximum in meinem linken Teilbaum. Danach lösche ich dieses Maximum aus meinem linken Teilbaum und zeichne den Teilbaum ab mir neu.


Herunterladen ppt "Löschen im Suchbaum."

Ähnliche Präsentationen


Google-Anzeigen