Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung 9 09.12.99 -Binärer Suchbaum III- -AVL-Baum-

Ähnliche Präsentationen


Präsentation zum Thema: "Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung 9 09.12.99 -Binärer Suchbaum III- -AVL-Baum-"—  Präsentation transkript:

1 Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung 9 09.12.99 -Binärer Suchbaum III- -AVL-Baum-

2 2 Übersicht Binärer Suchbaum –Durchlaufstrategien Breitendurchlauf –SohnElem –SohnListe, FügeAn (hinten) –Entferne vorne –Beispiele für den Aufbau binärer Suchbäume

3 3 Übersicht (Fortsetzung) AVL-Baum –Definition –Balancefaktor –Einfügen von Knoten R-Rotation L-Rotation –Löschen von Knoten L-Rotation –Allgemein L-Rotation LR-Rotation

4 4 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

5 5 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

6 6 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 Warteschlange

7 7 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 Ws

8 8 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 1024 Ws 16

9 9 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 10 24 Ws

10 10 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 10 14249 Ws

11 11 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 10 249 Ws 14

12 12 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 10 914 Ws 18

13 13 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 9 10 18914 Ws

14 14 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 9 14 10 1418 Ws

15 15 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 9 14 10 1813 Ws 15

16 16 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 9 14 18 10 151813 Ws

17 17 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 9 14 13 18 10 1315 Ws

18 18 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 9 14 13 18 15 10 15 Ws

19 19 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 9 14 13 18 15 10 Ws

20 20 class BST {... void Breitendurchlauf() { SohnListe ws = new SohnListe(); Knoten aktuell; ws.FügeAn(wurzel); while ((aktuell = ws.Entferne()) != null) { System.out.println(aktuell.GibWert()); ws.FügeAn(aktuell.GibLinks()); ws.FügeAn(aktuell.GibRechts()); }... } entferne Test auf Ende Durchlaufstrategie: Breitendurchlauf

21 21 Breitendurchlauf: SohnElem class SohnElem { private Knoten wert; private SohnElem weiter; SohnElem(Knoten k) { wert = k; weiter = null; } void SetzeWert(Knoten k) { wert = k; } Knoten GibWert() { return wert; } void SetzeWeiter(SohnElem s) { weiter = s; } SohnElem GibWeiter() { return weiter; } } knoten (statt int )

22 22 Breitendurchlauf: SohnListe, FügeAn (hinten) class SohnListe { private SohnElem kopf, fuß; void FügeAn(Knoten an) { SohnElem neu = new SohnElem(an); if (fuß != null) { fuß.SetzeWeiter(neu); fuß = neu; } else kopf = fuß = neu; }

23 23 Breitendurchlauf: Entferne vorne Knoten Entferne() { Knoten erster = null; if (kopf != null) { erster = kopf.GibWert(); kopf = kopf.GibWeiter(); if (kopf == null) fuss = null; } return erster;

24 24 Eingabefolge 1-2-3 1 2 3 Eingabefolge 3-2-1 Eingabefolge 2-3-1 oder 2-1-3 2 13 Eingabefolge 3-1-2 Beispiele für den Aufbau binärer Suchbäume 1 2 3 1 23

25 25 AVL-Baum (Definition) Ein binärer Baum heißt ausgeglichener Baum oder AVL-Baum (nach Adelson-Velskij und Landis), falls sich für jeden Knoten k die Höhen h der beiden Teilbäume um höchstens 1 unterscheiden.

26 26 AVL-Baum: Beispiel

27 27 Balancefaktor Balancefaktor bal(k) bal(k) = h(rechter Teilbaum von k) - h(linker Teilbaum von k) Für AVL-Bäume gilt: bal(k)

28 28 AVL-Baum: Beispiel 00 0 +1 +1

29 29 AVL-Baum: Beispiel 00 0 +1 +1

30 30 0 0 +1 0 +2 AVL-Baum: Beispiel

31 31 Einfügen von Knoten 2639 17113 208 33 14 00 0000 0+1 Einfügen von k = 30

32 32 14 113 8 00 0 2639 17 20 33 00 00 +1 Einfügen von Knoten Einfügen von k = 30

33 33 14 113 8 00 0 2639 17 20 33 00 00 +1 Einfügen von Knoten Einfügen von k = 30

34 34 17 20 14 0 2639 33 00 0 113 8 00 0 +1 Einfügen von Knoten Einfügen von k = 30

35 35 17 20 14 0 2639 33 00 0 113 8 00 0 +1 Einfügen von Knoten Einfügen von k = 30

36 36 14 30 2639 33 00 0 113 8 00 0 17 20 0 +1 0 Einfügen von Knoten Einfügen von k = 30

37 37 14 +1 113 8 00 0 17 20 0 +1 30 2639 33 0 0 0 Einfügen von Knoten Einfügen von k = 30

38 38 17 20 14 0 113 8 00 0 +1 2639 33 30 0+1 0 Einfügen von Knoten Einfügen von k = 30

39 39 17 20 14 0 113 8 00 0 +2 +1 2639 33 30 0+1 0 Ausgeglichenheit ist verletzt Einfügen von Knoten Einfügen von k = 30

40 40 17 20 14 0 113 8 00 0+2 +1 2639 33 30 0+1 0 Ausbalancieren durch Rotation Einfügen von Knoten Einfügen von k = 30

41 41 2639 17113 208 33 14 30 0+1 000 0+2 +1 0 Einfügen von Knoten R- Rotation Einfügen von k = 30

42 42 17 20 14 0 113 8 00 0 +2 +1 2639 33 30 0+1 0 Einfügen von Knoten Einfügen von k = 30

43 43 2639 17113 208 33 14 30 0+1 000 0+2 +1 0 Einfügen von Knoten Einfügen von k = 30

44 44 17 20 14 0 113 8 00 0 +2 +1 26 3039 33 L- Rotation Einfügen von Knoten Einfügen von k = 30

45 45 17 20 26 14 0 113 8 00 0+2 +1 3039 33 Einfügen von Knoten Einfügen von k = 30

46 46 17113 208 26 14 000 0+2 +1 3039 33 Einfügen von Knoten Einfügen von k = 30

47 47 26 14 113 8 00 00 +1 Einfügen von Knoten Einfügen von k = 30 39 2033 00 00 0 1730

48 48 113 268 14 0 00 00 +1 17 Einfügen von Knoten Einfügen von k = 30 39 2033 0 00 0 30

49 49 39 20113 268 33 14 00 0000 00 +1 0 1730 Einfügen von Knoten

50 50 Löschen von Knoten 2639 17113 208 33 14 00 0000 0+1 Löschen von k = 8

51 51 Löschen von Knoten 2639 17113 208 33 14 00 0000 0+1 Löschen von k = 8

52 52 Löschen von Knoten 113 8 14 00 0 2639 17 20 33 00 00 +1 Löschen von k = 8

53 53 Löschen von Knoten 3 14 0 11 2639 17 20 33 00 00 +1 Löschen von k = 8

54 54 Löschen von Knoten 3 14 0 11 2639 17 20 33 00 00 +1 Löschen von k = 8

55 55 Löschen von Knoten 3 14 0 11 2639 17 20 33 00 00 +1 Löschen von k = 8

56 56 Löschen von Knoten 3 14 0 11 2639 17 20 33 00 00 +1 Löschen von k = 11

57 57 Löschen von Knoten 3 14 0 11 2639 17 20 33 00 00 +1 Löschen von k = 11

58 58 Löschen von Knoten 3 14 0 11 2639 17 20 33 00 00 +1 Löschen von k = 11

59 59 Löschen von Knoten 14 3 0 2639 17 20 33 00 00 +1 Löschen von k = 11

60 60 Löschen von Knoten 14 3 0 2639 17 20 33 00 00 +1 +2 Löschen von k = 11 L- Rotation

61 61 Löschen von Knoten 14 3 0 2639 17 20 33 00 00 +1 +2 Löschen von k = 11

62 62 Löschen von Knoten 14 3 0 2639 17 20 33 00 00 +1 +2 Löschen von k = 11

63 63 20 173 14 00 0 26 33 39 00 0 0 Löschen von Knoten

64 64 26173 3314 39 20 0000 00 0 Löschen von Knoten

65 65 L-Rotation Knoten x wird eingefügt und verletzt dadurch die Ausgeglichenheit an einem höher gelegenen Knoten k 1 Notwendige Korrektur durch L-Rotation (symmetrisch: R-Rotation): Umhängen von zwei Kanten

66 66 L-Rotation T1T1 T2T2 T3T3 k1k1 k2k2 0 +1

67 67 L-Rotation T1T1 T2T2 T3T3 k1k1 k2k2 x +1 +2

68 68 L-Rotation T1T1 T2T2 T3T3 k1k1 k2k2 x +1 +2

69 69 L-Rotation T1T1 T2T2 T3T3 k1k1 k2k2 x +1 +2

70 70 L-Rotation T1T1 k1k1 k2k2 x 0 T2T2 T3T3 0

71 71 LR-Rotation x wird eingefügt und verletzt dadurch die Ausgeglichen- heit an einem höher gelegenen Knoten k 1. Notwendige Korrektur durch LR- Rotation (symmetrisch: RL-, RR- und LL- Rotation): Umhängen von vier Kanten

72 72 LR-Rotation T1T1 k2k2 k1k1 0 T3T3 T4T4 k3k3 T2T2 0

73 73 LR-Rotation T1T1 k2k2 k1k1 x +1 -2 T3T3 T4T4 k3k3 T2T2 +1

74 74 LR-Rotation k1k1 -2 T4T4 T1T1 k2k2 x +1 T3T3 k3k3 T2T2

75 75 LR-Rotation k1k1 -2 T1T1 k2k2 x +1 T3T3 T4T4 k3k3 T2T2

76 76 LR-Rotation T1T1 k2k2 k1k1 x +1 -2 T3T3 T4T4 k3k3 T2T2 +1

77 77 LR-Rotation k1k1 -2 T4T4 T1T1 k2k2 x T3T3 k3k3 T2T2

78 78 LR-Rotation k1k1 -2 T1T1 k2k2 x T3T3 T4T4 k3k3 T2T2

79 79 LR-Rotation T1T1 k2k2 k1k1 x -2 T3T3 T4T4 k3k3 T2T2

80 LR-Rotation T1T1 k2k2 k1k1 x 0 0 T3T3 T4T4 k3k3 T2T2


Herunterladen ppt "Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung 9 09.12.99 -Binärer Suchbaum III- -AVL-Baum-"

Ähnliche Präsentationen


Google-Anzeigen