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 Mathe Diskrete Mathematik I Binärer Suchbaum IV AVL-Baum I Vorlesung 8

2 Diskrete Mathe 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 Mathe A 26x Durchlaufstrategie: Breitendurchlauf Warteschlange

4 Diskrete Mathe A 26x Durchlaufstrategie: Breitendurchlauf Ws

5 Diskrete Mathe A 26x Durchlaufstrategie: Breitendurchlauf Ws 16

6 Diskrete Mathe A 26x Durchlaufstrategie: Breitendurchlauf Ws

7 Diskrete Mathe A 26x Durchlaufstrategie: Breitendurchlauf Ws

8 Diskrete Mathe A 26x Durchlaufstrategie: Breitendurchlauf Ws 14

9 Diskrete Mathe A 26x Durchlaufstrategie: Breitendurchlauf Ws 18

10 Diskrete Mathe A 26x Durchlaufstrategie: Breitendurchlauf Ws

11 Diskrete Mathe A 26x Durchlaufstrategie: Breitendurchlauf Ws

12 Diskrete Mathe A 26x Durchlaufstrategie: Breitendurchlauf Ws 15

13 Diskrete Mathe A 26x Durchlaufstrategie: Breitendurchlauf Ws

14 Diskrete Mathe A 26x Durchlaufstrategie: Breitendurchlauf Ws

15 Diskrete Mathe A 26x Durchlaufstrategie: Breitendurchlauf Ws

16 Diskrete Mathe A 26x Durchlaufstrategie: Breitendurchlauf Ws

17 Diskrete Mathe 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 Mathe 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 Mathe 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 Mathe 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 Mathe 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 Mathe Beispiele für den Aufbau binärer Suchbäume A 7x Eingabefolge Eingabefolge Eingabefolge oder Eingabefolge

23 Diskrete Mathe 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 Mathe AVL-Baum: Beispiel

25 Diskrete Mathe 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 Mathe AVL-Baum: Beispiel A 2x

27 Diskrete Mathe AVL-Baum: Beispiel A 2x

28 Diskrete Mathe AVL-Baum: Beispiel A 2x

29 Diskrete Mathe Einfügen von Knoten Einfügen von k = 30 A 36x

30 Diskrete Mathe Einfügen von Knoten Einfügen von k = 30 A 36x

31 Diskrete Mathe Einfügen von Knoten Einfügen von k = 30 A 36x

32 Diskrete Mathe Einfügen von Knoten Einfügen von k = 30 A 36x

33 Diskrete Mathe Einfügen von Knoten Einfügen von k = 30 A 36x

34 Diskrete Mathe Einfügen von Knoten Einfügen von k = 30 A 36x

35 Diskrete Mathe Einfügen von Knoten Einfügen von k = 30 A 36x

36 Diskrete Mathe Einfügen von Knoten Einfügen von k = 30 A 36x

37 Diskrete Mathe Einfügen von Knoten Einfügen von k = 30 A 36x Ausgeglichenheit ist verletzt

38 Diskrete Mathe Einfügen von Knoten Einfügen von k = 30 A 36x Ausbalancieren durch Rotation

39 Diskrete Mathe Einfügen von Knoten Einfügen von k = 30 A 36x R- Rotation

40 Diskrete Mathe Einfügen von Knoten Einfügen von k = 30 A 36x

41 Diskrete Mathe Einfügen von Knoten Einfügen von k = 30 A 36x

42 Diskrete Mathe Einfügen von Knoten Einfügen von k = 30 A 36x L- Rotation

43 Diskrete Mathe Einfügen von Knoten Einfügen von k = 30 A 36x

44 Diskrete Mathe Einfügen von Knoten Einfügen von k = 30 A 36x

45 Diskrete Mathe Einfügen von Knoten Einfügen von k = 30 A 36x

46 Diskrete Mathe Einfügen von Knoten Einfügen von k = 30 A 36x

47 Diskrete Mathe Einfügen von Knoten A 36x

48 Diskrete Mathe Löschen von Knoten Löschen von k = 8 A 9x

49 Diskrete Mathe Löschen von Knoten Löschen von k = 8 A 9x

50 Diskrete Mathe Löschen von Knoten Löschen von k = 8 A 9x

51 Diskrete Mathe Löschen von Knoten Löschen von k = 8 A 9x

52 Diskrete Mathe Löschen von Knoten Löschen von k = 8 A 9x

53 Diskrete Mathe Löschen von Knoten Löschen von k = 8 A 9x

54 Diskrete Mathe Löschen von k = 11 A 15x Löschen von Knoten

55 Diskrete Mathe Löschen von k = 11 A 15x Löschen von Knoten

56 Diskrete Mathe Löschen von k = 11 A 15x Löschen von Knoten

57 Diskrete Mathe Löschen von k = 11 A 15x Löschen von Knoten

58 Diskrete Mathe Löschen von k = 11 A 15x Löschen von Knoten L- Rotation

59 Diskrete Mathe Löschen von k = 11 A 15x Löschen von Knoten

60 Diskrete Mathe Löschen von k = 11 A 15x Löschen von Knoten

61 Diskrete Mathe Löschen von k = 11 A 15x Löschen von Knoten

62 Diskrete Mathe A 15x Löschen von Knoten

63 Diskrete Mathe 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 Mathe A 7x L-Rotation T1T1 T2T2 T3T3 k1k1 k2k2 0 +1

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

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

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

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

69 Diskrete Mathe 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 Mathe LR-Rotation A 14x T1T1 k2k2 k1k1 0 T3T3 T4T4 k3k3 T2T2 0

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

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

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

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

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

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

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

78 Diskrete Mathe 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