Suchbäume

Werbung
Binäre Bäume
Suchbäume
Binäre Bäume gestatten die Speicherung von Daten, die später effizient gesucht werden
können (z.B. Kundennummern).
Suchbaum
81
95
23
10
6
56
41
93
99
82
Ein binärer Baum heißt Suchbaum, wenn für jeden Knoten K,
der kein Blatt ist, gilt:
•Alle Knotenwerte (Schlüssel) des linken Teilbaums von K sind
kleiner als der Wert von K
•Alle Knotenwerte des rechten Teilbaums von K sind größer als der
Wert von K.
Suchbäume sind in der Regel nicht vollständig ausgeglichen, da sie im Betrieb wachsen oder
schrumpfen können. Vollständig ausgeglichene Suchbäume bieten den Vorteil, dass die
Suche im Mittel effizienter ist. Dies wird durch den Nachteil erkauft, dass sie (bei Bedarf) neu
aufgebaut werden müssen.
Wir verzichten hier auf die Forderung der vollständigen Ausgeglichenheit.
Erzeugen eines binären Suchbaums durch Einfügen von Knoten
Wir gehen von einem leeren Suchbaum aus und fügen sukzessive Knoten ein: Beim Einfügen
suchen wir nach der einzufügenden Stelle und hängen dort einen neuen Knoten ein.
Die Suche muss bis zur untersten Stufe (Ebene) des Baums ausgeführt werden! Warum?
© Wagner, 27. Apr. 2011 Seite 15
Binäre Bäume
Beispiel: Schrittweises Einhängen der Knotenwerte 8, 2, 4, 1, 6, 9, 5
Binärer Suchbaum
10
8
8
9
2
1
4
4
5
1
6
Einfügen von
8, 2, 4, 1, 6, 9, 5
5
7
Wie ist dieser
Suchbaum
entstanden?
6
Aufgaben
a) Füge in einen leeren Suchbaum ein: S E A1 R C H
b) Füge hinzu: Z, T, A2. (A1 ist kleiner als A2)
Warum befindet sich der zweite Schlüsselwert A2 nicht in direkter Nachbarschaft des ersten
Schlüsselwertes A1?
Welche Traversierungsart ist zu wählen, damit die Knoten des Suchbaums in sortierter
Reihenfolge ausgelesen werden?
Zeichne den binären Suchbaum, der entsteht, wenn in einen leeren Baum die Buchstaben des
Wortes I1NFORMATI2K (ABER, E1XAMPLE2) eingefügt werden.
Wovon hängt die Laufzeit bei der Suche nach einem Knoten ab?
Füge in einen leeren Suchbaum die Buchstaben A1SEA2RCHA3TF ein.
© Wagner, 27. Apr. 2011 Seite 16
Binäre Bäume
Löschen von Knoten
Beim Löschen eines Knotens wird ähnlich wie beim Suchen verfahren. Hat man den zu
löschenden Knoten gefunden, müssen 3 Fälle unterschieden werden:
der Knoten besitzt keine Nachfolger
der Knoten besitzt entweder einen linken oder einen rechten Nachfolger
der Knoten besitzt einen linken und einen rechten Nachfolger
Fall 1
Der zu löschende Knoten hat keine Nachfolger, er ist ein Blatt: z.B. A3, F oder T
Binärer Suchbaum, Fall 1
A1
S
T
E
A2
R
C
A3
H
F
Lösung: Trenne den Knoten ab.
© Wagner, 27. Apr. 2011 Seite 17
Binäre Bäume
Fall 2
Der zu löschende Knoten besitzt entweder einen linken oder einen rechten Nachfolger.
• Falls der linke Teilbaum leer ist, wird der rechte Nachfolger (Sohn) zum Nachfolger
des Vaterknotens
• Falls der rechte Teilbaum leer ist, wird der linke Nachfolger zum Nachfolger des
Vaterknotens
Beispiel: Knoten A2 löschen
Binärer Suchbaum, Fall 2
A1
A1
S
S
Vater
T
E
Sohn
A2
T
E
R
R
C
C
H
H
A3
A3
F
F
Verkette den Vaterknoten (E) mit dem Sohn (C) von A2 (rot).
© Wagner, 27. Apr. 2011 Seite 18
Binäre Bäume
Fall 3
Der zu löschende Knoten mit der Referenz 'zeiger' besitzt zwei nichtleere Teilbäume.
Suche den kleinsten Nachfolger leftmost im rechten Teilbaum (oder den größten Nachfolger
im linken Teilbaum). Warum?
Ersetze Knoteninhalt 'zeiger' durch leftmost und lösche leftmost aus der ursprünglichen
Position.
Binärer Suchbaum, Fall 3
A1
A1
S
S
zeiger
T
E
A2
A3
A2
R
C
F
leftmost
H
T
F
R
C
A3
Aufgabe: Lösche im obigen Baum den Wurzelknoten A1.
© Wagner, 27. Apr. 2011 Seite 19
H
Binäre Bäume
Aufwand beim Suchen
Wie misst man den Aufwand?
Definition
Aufwand (= Schrittzahl) ist die Zahl der Vergleiche, die bei der Suche erforderlich
sind.
Wir betrachten den schlechtesten Fall:
Der Aufwand S ist gleich der Weglänge +1 von der Wurzel bis zum tiefsten Blatt.
S = h +1
(Höhe des Baums + 1)
Fall 1: Entarteter Baum
S(n) = n
Fall 2: Vollständiger Baum:
Knotenzahl
n <= 2h+1 – 1
log2(n + 1) <= h + 1
Näherungsweise gilt:
h + 1 ≈ log2(n)
Daraus folgt
S(n) ≈ log2(n)
Was bedeutet dies, wenn die Knotenzahl im Baum doppelt so groß ist?
S(2•n) = ….
Antwort:
Bei Verdopplung der Knotenzahl wächst der Suchaufwand um …..
© Wagner, 27. Apr. 2011 Seite 20
Herunterladen