Diskrete Mathe1 12345678 Diskrete Mathematik I Binärer Suchbaum III Vorlesung 7.

Post on 06-Apr-2016

215 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

Transcript

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()); }}

top related