Nächste Seite: Balancierte Binärbäume
Aufwärts: Suchbäume
Vorherige Seite: Suchbäume
  Inhalt
- Search(p,x)
- Die Suche eines Schlüsselwerts erfolgt durch den
Funktionsaufruf , wobei der
Wurzelknoten ist1. Wir verfahren nach folgender Methode:
- starte in der Wurzel
- sei der aktuelle Knoten
- ist , dann suche im linken Teilbaum von
(falls möglich
)
- ist , dann suche im rechten Teilbaum von
(falls möglich
)
- ist , dann beende die Suche.
Der Algorithmus ist so formuliert, dass
ein Knoten zurückgegeben wird:
- Für eine erfolgreiche Suche ist .
- Für eine erfolglose Suche zeigt auf NIL.
Die Rückgabe des Knotens wird für das Löschen bzw.
Einfügen benötigt.
- Insert(VAR p, x)
- Um einen Schlüssel in einem Suchbaum einzufügen, suchen wir
zunächst nach dem einzufügenden Schlüssel im
gegebenen Baum. Der nichtgefundene Schlüssel wird
dann an der erwartenden Position unter den Blättern
eingefügt. D.h. wir ersetzen das Blatt durch einen inneren
Knoten mit dem einzufügenden Schlüssel als Wert
und zwei Blätter als Söhnen. So entsteht wieder ein Suchbaum.
Abbildung 3 veranschaulicht dies.
Abbildung 3:
Einfügen in einen Suchbaum
|
- Delete(p,x)
- Beim Löschen eines Schlüsselwerts , der als Markierung
eines Knotens gefunden wurde, sind drei Fälle zu unterscheiden:
- Ist ein Blatt, dann wird einfach gelöscht.
- Wenn genau einen Sohn hat, dann kann man
wie folgt vorgehen:
- ist die Wurzel, dann wird gelöscht
und zur Wurzel gemacht.
- ist der Vater von , dann kann man
löschen und die Kante durch die Kante
ersetzen.
- Wir nehmen an, dass zwei Söhne hat.
Wir bestimmen zunächst denjenigen Knoten im linken
Teilbaum von , der mit dem nächst kleineren Schlüsselwert
markiert ist. Dieser ist der grösste Schlüsselwert im linken Teilbaum
von und lässt sich durch die Suche des Schlüsselwertes
im linken Teilbaum von bestimmen.
Die Markierung wird dann zur Markierung von
gemacht und der Knoten gelöscht. Zu beachten: Der Knoten
hat keinen rechten Sohn, kann also gemäss Fall 1 oder 2
gelöscht werden. Tatsächlich gelöscht wird also stets nur
solche Knoten, die höchstens einen Sohn haben.
Abbildung 4:
Löschen von Knoten
|
Abbildung 5:
Löschen von Knoten(2)
|
Im wesentlichen wird für alle drei Operationen der Suchbaum auf
einem Pfad von der Wurzel bis zu einem Blatt durchlaufen. Damit
ergeben sich folgende Kosten:
- Die Grundoperationen Suchen, Löschen und Einfügen in
einen binären Suchbaum lassen sich in Zeit
durchführen. Dabei ist die
Anzahl der Schlüsselwerte (Knoten) in .
-
Nächste Seite: Balancierte Binärbäume
Aufwärts: Suchbäume
Vorherige Seite: Suchbäume
  Inhalt
Daniel Hottinger
2001-05-16