Diskrete Mathe 1 1 2 3 4 5 6 7 8 Diskrete Mathematik I Binärer Suchbaum III Vorlesung 7
Diskrete Mathe11 2 3 4 5 6 7 8
Diskrete Mathematik I
Binärer Suchbaum III
Vorlesung 7
Diskrete Mathe11 2 3 4 5 6 7 81
• Binärer Suchbaum– Suchen von Knoten– Löschen von Knoten (Wurzel)– Durchlaufstrategien
• Preorder• Breitendurchlauf
Übersicht
Diskrete Mathe11 2 3 4 5 6 7 82
• 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
Binärer Suchbaum
n
<n >n
Diskrete Mathe11 2 3 4 5 6 7 83
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.
Diskrete Mathe11 2 3 4 5 6 7 84
• Rechter Unterbaum ist unbesetzt
A 3x
Löschen von Knoten (Wurzel)
149
10
16
13 15
Diskrete Mathe11 2 3 4 5 6 7 84
• Rechter Unterbaum ist unbesetzt
A 3x
Löschen von Knoten (Wurzel)
149
10
16
13 15
Diskrete Mathe11 2 3 4 5 6 7 84
• Rechter Unterbaum ist unbesetzt
A 3x
Löschen von Knoten (Wurzel)
Unterbaum bildeteinen
binären Baum
149
10
13 15
Diskrete Mathe11 2 3 4 5 6 7 85
Löschen von Knoten (Wurzel)
• Beide Unterbäume sind besetzt
A 12x
18149
10 24
16
13 15
Diskrete Mathe11 2 3 4 5 6 7 85
Löschen von Knoten (Wurzel)
• Beide Unterbäume sind besetzt
A 12x
Suchbaum zerfällt inzwei disjunkte Bäume
Es muß eine neuer Knoten, der dieWurzel bildet, gefunden werden.
149
10
13 15
18
24
Diskrete Mathe11 2 3 4 5 6 7 85
Löschen von Knoten (Wurzel)
• Beide Unterbäume sind besetzt
A 12x
18149
10 24
16
13 15
Kriterien:Der Knoten muss der Größte des linken Unterbaums sein.
Der Knoten muss der Kleinste des rechten Unterbaums sein.
Diskrete Mathe11 2 3 4 5 6 7 85
Löschen von Knoten (Wurzel)
• Beide Unterbäume sind besetzt
A 12x
18149
10 24
16
13 15 Kandidaten
Diskrete Mathe11 2 3 4 5 6 7 85
Löschen von Knoten (Wurzel)
• Beide Unterbäume sind besetzt
A 12x
18149
10 24
16
13 15 Kandidaten
Diskrete Mathe11 2 3 4 5 6 7 85
Löschen von Knoten (Wurzel)
• Beide Unterbäume sind besetzt
A 12x
18149
10 24
16
13 15 Kandidaten
Diskrete Mathe11 2 3 4 5 6 7 85
Löschen von Knoten (Wurzel)
• Beide Unterbäume sind besetzt
A 12x
18149
10 24
15
13
Diskrete Mathe11 2 3 4 5 6 7 86
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
Diskrete Mathe11 2 3 4 5 6 7 87
Durchlaufstrategie: Preorder
A 9x
18149
10 24
16
13 15
Diskrete Mathe11 2 3 4 5 6 7 87
Durchlaufstrategie: Preorder
A 9x
18149
10 24
16
13 15
16
Diskrete Mathe11 2 3 4 5 6 7 87
Durchlaufstrategie: Preorder
A 9x
18149
10 24
16
13 15
16, 10
Diskrete Mathe11 2 3 4 5 6 7 87
Durchlaufstrategie: Preorder
A 9x
18149
10 24
16
13 15
16, 10, 9
Diskrete Mathe11 2 3 4 5 6 7 87
Durchlaufstrategie: Preorder
A 9x
18149
10 24
16
13 15
16, 10, 9, 14
Diskrete Mathe11 2 3 4 5 6 7 87
Durchlaufstrategie: Preorder
A 9x
18149
10 24
16
13 15
16, 10, 9, 14, 13
Diskrete Mathe11 2 3 4 5 6 7 87
Durchlaufstrategie: Preorder
A 9x
18149
10 24
16
13 15
16, 10, 9, 14, 13, 15
Diskrete Mathe11 2 3 4 5 6 7 87
Durchlaufstrategie: Preorder
A 9x
18149
10 24
16
13 15
16, 10, 9, 14, 13, 15, 24
Diskrete Mathe11 2 3 4 5 6 7 87
Durchlaufstrategie: Preorder
A 9x
18149
10 24
16
13 15
16, 10, 9, 14, 13, 15, 24, 18
Diskrete Mathe11 2 3 4 5 6 7 87
Durchlaufstrategie: Preorder
A 9x
18149
10 24
16
13 15
16, 10, 9, 14, 13, 15, 24, 18
Diskrete Mathe11 2 3 4 5 6 7 88
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()); }}