Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Diskrete Mathe1 12345678910111213141516171819 Diskrete Mathematik I Binärer Suchbaum IV AVL-Baum I Vorlesung 8.

Ähnliche Präsentationen


Präsentation zum Thema: "Diskrete Mathe1 12345678910111213141516171819 Diskrete Mathematik I Binärer Suchbaum IV AVL-Baum I Vorlesung 8."—  Präsentation transkript:

1 Diskrete Mathe1 12345678910111213141516171819 Diskrete Mathematik I Binärer Suchbaum IV AVL-Baum I Vorlesung 8

2 Diskrete Mathe1 123456789101112131415161718191 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 Durchlaufstrategien

3 Diskrete Mathe1 123456789101112131415161718192 A 26x Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 Warteschlange

4 Diskrete Mathe1 123456789101112131415161718192 A 26x Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 Ws

5 Diskrete Mathe1 123456789101112131415161718192 A 26x Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 1024 Ws 16

6 Diskrete Mathe1 123456789101112131415161718192 A 26x Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 10 24 Ws

7 Diskrete Mathe1 123456789101112131415161718192 A 26x Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 10 14249 Ws

8 Diskrete Mathe1 123456789101112131415161718192 A 26x Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 10 249 Ws 14

9 Diskrete Mathe1 123456789101112131415161718192 A 26x Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 10 914 Ws 18

10 Diskrete Mathe1 123456789101112131415161718192 A 26x Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 9 10 18914 Ws

11 Diskrete Mathe1 123456789101112131415161718192 A 26x Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 9 14 10 1418 Ws

12 Diskrete Mathe1 123456789101112131415161718192 A 26x Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 9 14 10 1813 Ws 15

13 Diskrete Mathe1 123456789101112131415161718192 A 26x Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 9 14 18 10 151813 Ws

14 Diskrete Mathe1 123456789101112131415161718192 A 26x Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 9 14 13 18 10 1315 Ws

15 Diskrete Mathe1 123456789101112131415161718192 A 26x Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 9 14 13 18 15 10 15 Ws

16 Diskrete Mathe1 123456789101112131415161718192 A 26x Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 9 14 13 18 15 10 Ws

17 Diskrete Mathe1 123456789101112131415161718193 Durchlaufstrategie: Breitendurchlauf 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()); }... } A 2x entferne Test auf Ende

18 Diskrete Mathe1 123456789101112131415161718194 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; } } Breitendurchlauf: SohnElem knoten (statt int)

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

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

21 Diskrete Mathe1 123456789101112131415161718197 Vergleich „Binäre Suchbäume“ - „Liste“ in einem binären Suchbaum findet man schneller ein vorhandenes Objekt in einem binären Suchbaum stellt man schneller fest, daß ein Objekt nicht vorhanden ist warum? –der Weg vom Kopf zur Wurzel ist im allgemeinen kürzer als der Weg vom Anfang zum Ende eine Liste –(kann man das genauer, d. h. quantitativ angeben? später) es gibt aber auch ungünstige Fälle, wo der Baum aussieht wie eine Liste diese Fälle treten stets bei der iterativen Eingabe sortierter Elemente auf

22 Diskrete Mathe1 123456789101112131415161718198 Beispiele für den Aufbau binärer Suchbäume A 7x 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 1 2 3 1 2 3

23 Diskrete Mathe1 12345678910111213141516171819 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. 9

24 Diskrete Mathe1 1234567891011121314151617181910 AVL-Baum: Beispiel

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

26 Diskrete Mathe1 1234567891011121314151617181912 AVL-Baum: Beispiel A 2x 00 0 +1 +1

27 Diskrete Mathe1 1234567891011121314151617181912 AVL-Baum: Beispiel A 2x 00 0 +1 +1

28 Diskrete Mathe1 1234567891011121314151617181912 AVL-Baum: Beispiel A 2x 0 0 +1 0 +2

29 Diskrete Mathe1 1234567891011121314151617181913 Einfügen von Knoten Einfügen von k = 30 A 36x 0 0 0000 0+1 26 39 17113 208 33 14

30 Diskrete Mathe1 1234567891011121314151617181913 Einfügen von Knoten Einfügen von k = 30 A 36x 00 0 0 0 00 +1 14 113 8 26 39 17 20 33

31 Diskrete Mathe1 1234567891011121314151617181913 Einfügen von Knoten Einfügen von k = 30 A 36x 00 0 0 0 00 +1 14 113 8 26 39 17 20 33

32 Diskrete Mathe1 1234567891011121314151617181913 Einfügen von Knoten Einfügen von k = 30 A 36x 0 0 0 000 0+1 17 20 14 26 39 33113 8

33 Diskrete Mathe1 1234567891011121314151617181913 Einfügen von Knoten Einfügen von k = 30 A 36x 0 0 0 000 0+1 17 20 14 26 39 33113 8

34 Diskrete Mathe1 1234567891011121314151617181913 Einfügen von Knoten Einfügen von k = 30 A 36x 0 0 000 0 0 +1 0 14 30 26 39 33113 8 17 20

35 Diskrete Mathe1 1234567891011121314151617181913 Einfügen von Knoten Einfügen von k = 30 A 36x +1 00 0 0 0 0 0 14 113 8 17 20 30 26 39 33

36 Diskrete Mathe1 1234567891011121314151617181913 Einfügen von Knoten Einfügen von k = 30 A 36x 000 0+1 0 +1 0 17 20 14 113 8 26 39 33 30

37 Diskrete Mathe1 1234567891011121314151617181913 Einfügen von Knoten Einfügen von k = 30 A 36x 000 0+2 0 +1 0 Ausgeglichenheit ist verletzt +1 17 20 14 113 8 26 39 33 30

38 Diskrete Mathe1 1234567891011121314151617181913 Einfügen von Knoten Einfügen von k = 30 A 36x 000 0+2 0 +1 0 Ausbalancieren durch Rotation +1 17 20 14 113 8 26 39 33 30

39 Diskrete Mathe1 1234567891011121314151617181913 Einfügen von Knoten Einfügen von k = 30 A 36x 0 +1 000 0+2 0 R- Rotation +1 26 39 17113 208 33 14 30

40 Diskrete Mathe1 1234567891011121314151617181913 Einfügen von Knoten Einfügen von k = 30 A 36x 000 0+2 0 +1 0 +1 17 20 14 113 8 26 39 33 30

41 Diskrete Mathe1 1234567891011121314151617181913 Einfügen von Knoten Einfügen von k = 30 A 36x 0 +1 000 0+2 0 +1 26 39 17113 208 33 14 30

42 Diskrete Mathe1 1234567891011121314151617181913 Einfügen von Knoten Einfügen von k = 30 A 36x 000 0+2 L- Rotation +1 17 20 14 113 8 26 3039 33

43 Diskrete Mathe1 1234567891011121314151617181913 Einfügen von Knoten Einfügen von k = 30 A 36x 000 0+2 +1 17 20 26 14 113 8 3039 33

44 Diskrete Mathe1 1234567891011121314151617181913 Einfügen von Knoten Einfügen von k = 30 A 36x 000 0+2 +1 17113 208 26 14 3039 33

45 Diskrete Mathe1 1234567891011121314151617181913 Einfügen von Knoten Einfügen von k = 30 A 36x 00 00 0 0 00 0 +1 26 14 113 8 39 2033 1730

46 Diskrete Mathe1 1234567891011121314151617181913 Einfügen von Knoten Einfügen von k = 30 A 36x 0 00 00 0 00 0 +1 113 268 14 17 39 2033 30

47 Diskrete Mathe1 1234567891011121314151617181913 Einfügen von Knoten A 36x 0 0 0000 00 0 +1 39 20113 268 33 14 1730

48 Diskrete Mathe1 1234567891011121314151617181914 Löschen von Knoten Löschen von k = 8 A 9x 0 0000 0+1 0 26 39 17113 208 33 14

49 Diskrete Mathe1 1234567891011121314151617181914 Löschen von Knoten Löschen von k = 8 A 9x 0 0 0000 0+1 26 39 17113 208 33 14

50 Diskrete Mathe1 1234567891011121314151617181914 Löschen von Knoten Löschen von k = 8 A 9x 00 0 0 0 00 +1 113 8 14 26 39 17 20 33

51 Diskrete Mathe1 1234567891011121314151617181914 Löschen von Knoten Löschen von k = 8 A 9x 0 0 0 00 +1 3 14 11 26 39 17 20 33

52 Diskrete Mathe1 1234567891011121314151617181914 Löschen von Knoten Löschen von k = 8 A 9x 0 0 0 00 +1 3 14 11 26 39 17 20 33

53 Diskrete Mathe1 1234567891011121314151617181914 Löschen von Knoten Löschen von k = 8 A 9x 0 0 0 00 +1 3 14 11 26 39 17 20 33

54 Diskrete Mathe1 1234567891011121314151617181915 Löschen von k = 11 A 15x Löschen von Knoten 0 0 0 00 +1 3 14 11 26 39 17 20 33

55 Diskrete Mathe1 1234567891011121314151617181915 Löschen von k = 11 A 15x Löschen von Knoten 0 0 0 00 +1 3 14 11 26 39 17 20 33

56 Diskrete Mathe1 1234567891011121314151617181915 Löschen von k = 11 A 15x Löschen von Knoten 0 0 0 00 +1 3 14 11 26 39 17 20 33

57 Diskrete Mathe1 1234567891011121314151617181915 Löschen von k = 11 A 15x Löschen von Knoten 0 0 0 00 +1 14 3 26 39 17 20 33

58 Diskrete Mathe1 1234567891011121314151617181915 Löschen von k = 11 A 15x Löschen von Knoten 0 0 0 00 +1 +2 L- Rotation 14 3 26 39 17 20 33

59 Diskrete Mathe1 1234567891011121314151617181915 Löschen von k = 11 A 15x Löschen von Knoten 0 0 0 00 +1 +2 14 3 26 39 17 20 33

60 Diskrete Mathe1 1234567891011121314151617181915 Löschen von k = 11 A 15x Löschen von Knoten 0 0 0 00 +1 +2 14 3 26 39 17 20 33

61 Diskrete Mathe1 1234567891011121314151617181915 Löschen von k = 11 A 15x Löschen von Knoten 00 0 00 0 0 20 173 14 26 33 39

62 Diskrete Mathe1 1234567891011121314151617181915 A 15x Löschen von Knoten 0000 00 0 26173 3314 39 20

63 Diskrete Mathe1 1234567891011121314151617181916 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

64 Diskrete Mathe1 1234567891011121314151617181917 A 7x L-Rotation T1T1 T2T2 T3T3 k1k1 k2k2 0 +1

65 Diskrete Mathe1 1234567891011121314151617181917 A 7x L-Rotation T1T1 T2T2 T3T3 k1k1 k2k2 x +1 +2

66 Diskrete Mathe1 1234567891011121314151617181917 A 7x L-Rotation T1T1 T2T2 T3T3 k1k1 k2k2 x +1 +2

67 Diskrete Mathe1 1234567891011121314151617181917 A 7x L-Rotation T1T1 T2T2 T3T3 k1k1 k2k2 x +1 +2

68 Diskrete Mathe1 1234567891011121314151617181917 A 7x L-Rotation T1T1 k1k1 k2k2 x 0 T2T2 T3T3 0

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

70 Diskrete Mathe1 12345678910111213141516171819 LR-Rotation A 14x T1T1 k2k2 k1k1 0 T3T3 T4T4 k3k3 T2T2 0

71 Diskrete Mathe1 12345678910111213141516171819 LR-Rotation A 14x T1T1 k2k2 k1k1 x +1 -2 T3T3 T4T4 k3k3 T2T2 +1

72 Diskrete Mathe1 12345678910111213141516171819 LR-Rotation A 14x k1k1 -2 T4T4 T1T1 k2k2 x +1 T3T3 k3k3 T2T2

73 Diskrete Mathe1 12345678910111213141516171819 LR-Rotation A 14x k1k1 -2 T1T1 k2k2 x +1 T3T3 T4T4 k3k3 T2T2

74 Diskrete Mathe1 12345678910111213141516171819 LR-Rotation A 14x T1T1 k2k2 k1k1 x +1 -2 T3T3 T4T4 k3k3 T2T2 +1

75 Diskrete Mathe1 12345678910111213141516171819 LR-Rotation A 14x k1k1 -2 T4T4 T1T1 k2k2 x T3T3 k3k3 T2T2

76 Diskrete Mathe1 12345678910111213141516171819 LR-Rotation A 14x k1k1 -2 T1T1 k2k2 x T3T3 T4T4 k3k3 T2T2

77 Diskrete Mathe1 12345678910111213141516171819 LR-Rotation A 14x T1T1 k2k2 k1k1 x -2 T3T3 T4T4 k3k3 T2T2

78 Diskrete Mathe1 12345678910111213141516171819 LR-Rotation A 14x T1T1 k2k2 k1k1 x 0 0 T3T3 T4T4 k3k3 T2T2


Herunterladen ppt "Diskrete Mathe1 12345678910111213141516171819 Diskrete Mathematik I Binärer Suchbaum IV AVL-Baum I Vorlesung 8."

Ähnliche Präsentationen


Google-Anzeigen