Institut für Kartographie und Geoinformation
Diskrete Mathematik IVorlesung 8
02.12.99
-Binärer Suchbaum II-
2
Übersicht
• Binärer Suchbaum– Suchen von Knoten– Löschen von Knoten (Wurzel)– Durchlaufstrategien
• Preorder• Breitendurchlauf
3
Binärer Suchbaum
• Ein binärer Baum B ist ein binärer Suchbaum, falls er leer ist oder die folgenden Eigenschaften erfüllt sind:
– die beiden Unterbäume sind binäre Suchbäume– die Beschriftungen der Knoten des linken Suchbaums sind
kleiner als die Beschriftung der Wurzel– die Beschriftungen des rechten Suchbaums sind größer als
die Beschriftung der Wurzel
n
<n >n
4
Suchen von Knoten
Suche einer Zahl k in einem binären Suchbaum B
• B ist leer– k kann nicht im Baum sein.
• B ist nicht leer– B.wert = k : k ist gefunden, d.h. bereits in B vorhanden.– B.wert < k : Suche im rechten Unterbaum von B.– B.wert > k : Suche im linken Unterbaum von B.
5
Löschen von Knoten (Wurzel)
149
10
16
13 15
• Rechter Unterbaum ist unbesetzt
6
Löschen von Knoten (Wurzel)
• Rechter Unterbaum ist unbesetzt
Unterbaum bildeteinen
binären Baum
149
10
13 15
7
Löschen von Knoten (Wurzel)
18149
10 24
16
13 15
• Beide Unterbäume sind besetzt
8
Löschen von Knoten (Wurzel)
• Beide Unterbäume sind besetzt
Suchbaum zerfällt inzwei disjunkte Bäume
Es muß eine neuer Knoten, der dieWurzel bildet, gefunden werden.
149
10
13 15
18
24
9
Löschen von Knoten (Wurzel)
18149
10 24
16
13 15
• Beide Unterbäume sind besetzt
Kriterien:Der Knoten muß größer sein, als die Wurzel des linken Unterbaums.
Der Knoten muß kleiner sein als die Wurzel des rechten Unterbaums.
10
Löschen von Knoten (Wurzel)
18149
10 24
16
13 15
• Beide Unterbäume sind besetzt
Kandidaten
11
Löschen von Knoten (Wurzel)
18149
10 24
15
13
• Beide Unterbäume sind besetzt
12
Durchlaufstrategien
• Preorder– Die Wurzel wird vor den Unterbäumen besucht,
die Unterbäume werden von links nach rechts abgearbeitet
• Breitendurchlauf– Mit einem Knoten werden seine Nachbarn
von links nach rechts besucht
13
Durchlaufstrategie: Preorder
18149
10 24
16
13 15
14
Durchlaufstrategie: Preorder
18149
10 24
16
13 15
16
15
Durchlaufstrategie: Preorder
18149
10 24
16
13 15
16, 10
16
Durchlaufstrategie: Preorder
18149
10 24
16
13 15
16, 10, 9
17
Durchlaufstrategie: Preorder
18149
10 24
16
13 15
16, 10, 9, 14
18
Durchlaufstrategie: Preorder
18149
10 24
16
13 15
16, 10, 9, 14, 13
19
Durchlaufstrategie: Preorder
18149
10 24
16
13 15
16, 10, 9, 14, 13, 15
20
Durchlaufstrategie: Preorder
18149
10 24
16
13 15
16, 10, 9, 14, 13, 15, 24
21
Durchlaufstrategie: Preorder
18149
10 24
16
13 15
16, 10, 9, 14, 13, 15, 24, 18
22
Durchlaufstrategie: Preorder
18149
10 24
16
13 15
16, 10, 9, 14, 13, 15, 24, 18
23
Durchlaufstrategie: Preorder
void PreOrder() { PreOrder(wurzel);}private void PreOrder(Knoten aktuell) { if (aktuell != null) { System.out.println(aktuell.GibWert()); PreOrder(aktuell.GibLinks()); PreOrder(aktuell.GibRechts()); }}
Schönen Dank für Ihre Aufmerksamkeit und
Auf Wiedersehen