Datenstrukturen und Algorithmen

Größe: px
Ab Seite anzeigen:

Download "Datenstrukturen und Algorithmen"

Transkript

1 Joost-Pieter Katoen Datenstrukturen und Algorithmen 1/45 Datenstrukturen und Algorithmen Vorlesung 3: Elementare Datenstrukturen (K10) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group April 2018

2 Joost-Pieter Katoen Datenstrukturen und Algorithmen 2/45 Übersicht 1 Abstrakte Datentypen 2 Stapel und Warteschlangen 3 Verkettete Listen Einfach verkettete Listen Doppelt verkettete Listen 4 Binäre Bäume Traversierungen

3 Abstrakte Datentypen Joost-Pieter Katoen Datenstrukturen und Algorithmen 3/45 Übersicht 1 Abstrakte Datentypen 2 Stapel und Warteschlangen 3 Verkettete Listen Einfach verkettete Listen Doppelt verkettete Listen 4 Binäre Bäume Traversierungen

4 - Abstrakte Datentypen Joost-Pieter Katoen Datenstrukturen und Algorithmen 4/45 Abstrakte Datentypen Abstrakter Datentyp (ADT) Ein abstrakter Datentyp besteht aus: I Einer Datenstruktur (Menge von Werten) und I einer Menge von Operationen darauf. (z. B. Konstruktor, Zugri s- und Bearbeitungsfunktionen) Beispiele Baum, Kellerspeicher (stack), Liste, Warteschlange (queue), Prioritätswarteschlange (priority queue), Wörterbuch...

5 Abstrakte Datentypen Joost-Pieter Katoen Datenstrukturen und Algorithmen 5/45 Datenkapselung y Einsabe, Ausgabe ; Unterscheide zwischen Wien Spezifikation des ADTs: wie sich die Datenobjekte verhalten, und : Implementierung: wie dieses Verhalten programmtechnisch erreicht wird. 0 nicht

6 Abstrakte Datentypen Joost-Pieter Katoen Datenstrukturen und Algorithmen 5/45 Datenkapselung Unterscheide zwischen Spezifikation des ADTs: wie sich die Datenobjekte verhalten, und Implementierung: wie dieses Verhalten programmtechnisch erreicht wird. Datenkapselung (data encapsulation) Dieses Paradigma wird Kapselung (oder: Datenabstraktion) genannt: I Daten sind außerhalb des ADT nur über wohldefinierte Operationen -. zugänglich. I Die Repräsentation der Daten ist nur für die Implementierung relevant.

7 . - Abstrakte Datentypen Joost-Pieter Katoen Datenstrukturen und Algorithmen 6/45 Spezifikation von ADTs (I) Spezifikation eines ADTs # I Beschreibt wie sich die Operationen auf den Daten verhalten; I nicht jedoch die interne Repräsentation der Daten, Eingabe, Ausgebe I genauso wenig wie die Implementierung der Operationen.

8 Abstrakte Datentypen Joost-Pieter Katoen Datenstrukturen und Algorithmen 6/45 Spezifikation von ADTs (I) Spezifikation eines ADTs I Beschreibt wie sich die Operationen auf den Daten verhalten; I nicht jedoch die interne Repräsentation der Daten, I genauso wenig wie die Implementierung der Operationen. Beschreibung der Auswirkung von Operationen durch logische Aussagen: Vorbedingung (precondition) = Aussage, die vor Aufruf der Operation gelten muss. (Verpflichtung des Benutzers!) Nachbedingung (postcondition) Aussage, die als Ergebnis der Operation gelten wird. Grundlage für die Argumentation über die Korrektheit des ADTs.

9 Abstrakte Datentypen - -. Joost-Pieter Katoen Datenstrukturen und Algorithmen 7/45. Spezifikation von ADTs (II) Beispiel = Die Operation void push(stack s, Element e) hat I die Vorbedingung: true (d. h. leere Aussage) und I die Nachbedingung: neuester Eintrag von s ist e. I ADTs sind durch ihre Spezifikation festgelegte Standard -Komponenten zum Aufbau unserer Algorithmen.

10 Abstrakte Datentypen Joost-Pieter Katoen Datenstrukturen und Algorithmen 8/45 Implementierung von ADTs Implementierung eines ADTs I Beschreibt die interne Repräsentation der Daten, und I die genaue Implementierung der Operationen. - =

11 Abstrakte Datentypen Joost-Pieter Katoen Datenstrukturen und Algorithmen 8/45 Implementierung von ADTs Implementierung eines ADTs I Beschreibt die interne Repräsentation der Daten, und I die genaue Implementierung der Operationen. Verschiedene Implementierungen von ADTs der selben Spezifikation ermöglichen es uns die Performance zu optimieren. Grundlage für die Argumentation über die E zienz des ADTs.

12 Abstrakte Datentypen Joost-Pieter Katoen Datenstrukturen und Algorithmen 8/45 Implementierung von ADTs Implementierung eines ADTs I Beschreibt die interne Repräsentation der Daten, und I die genaue Implementierung der Operationen. Verschiedene Implementierungen von ADTs der selben Spezifikation ermöglichen es uns die Performance zu optimieren. Grundlage für die Argumentation über die E Beispiel zienz des ADTs. Die Operation push(stack s, Element e) als Array-Implementierung: =p 1 void push(stack s, Element e) { 2 s.top = s.top + 1;,# stpfggf 3 s[s.top] = e; 4 } bevor An # machine

13 Joost-Pieter Katoen Datenstrukturen und Algorithmen 9/45 Elementare Datenstrukturen Abstrakte Datentypen E zienz von Implementierungen Die E zienz einer ADT-Implementierung ist entscheidend. = 1. Die Zeitkomplexität der Operationen auf dem ADT. I Einfügen von Elementen, I Löschen von Elementen, I Suchen von Elementen. 2. Die Platzkomplexität der internen Datenrepräsentation.

14 Joost-Pieter Katoen Datenstrukturen und Algorithmen 9/45 Elementare Datenstrukturen E Die E Abstrakte Datentypen zienz von Implementierungen zienz einer ADT-Implementierung ist entscheidend. 1. Die Zeitkomplexität der Operationen auf dem ADT. I Einfügen von Elementen, I Löschen von Elementen, I Suchen von Elementen. 2. Die Platzkomplexität der internen Datenrepräsentation. Üblicherweise ein Kompromiss zwischen Zeit- und Platze zienz: I Schnelle Operationen benötigen in der Regel zusätzlichen Speicherplatz. I Platzsparende Repräsentationen führen oft zu langsameren Operationen. Beispiel Implementierungen einer Prioritätswarteschlange (später). -

15 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 10/45 Übersicht 1 Abstrakte Datentypen 2 Stapel und Warteschlangen 3 Verkettete Listen Einfach verkettete Listen Doppelt verkettete Listen 4 Binäre Bäume Traversierungen

16 Elementare Datenstrukturen Stapel und Warteschlangen Beispiele für ADTs: Stapel (I) Joost-Pieter Katoen Datenstrukturen und Algorithmen 11/45

17 - Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 12/45 Beispiele für ADTs: Stapel (II) Stapel (stack) Ein Stapel (Kellerspeicher) speichert # eine Ansammlung von Elementen und bietet folgende Operationen: I bool isempty(stack s) gibt true zurück, wenn s leer ist und andernfalls false. I void push(stack s, Element e) fügt das Element e in den Stapel s ein. I Element pop(stack s) entfernt das zuletzt eingefügte Element und - gibt es zurück; pop(s) benötigt einen nicht-leeren Stapel s. Ein Stapel bietet LIFO (last-in first-out) Semantik. " beads : ;o rbedingung

18 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 13/45 Beispiele für ADTs: Warteschlangen (I)

19 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 14/45 Beispiele für ADTs: Warteschlangen (II) Warteschlange (queue) Eine Warteschlange speichert eine Ansammlung von Elementen und bietet folgende Operationen: I bool isempty(queue q) gibt true zurück, wenn q leer ist, andernfalls false.. I void enqueue(queue q, Element e) fügt das Element e in die Warteschlange q ein. I Element dequeue(queue q) entfernt das schon am längsten in der Warteschlange vorhandene Element und gibt es zurück; benötigt daher eine nicht-leere Warteschlange q. Vorbedngnng Eine Warteschlange bietet FIFO (first-in first-out) Semantik. f-

20 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/45 Stapelimplementierung auf unbeschränkten Arrays = - Datenstnktnr fir die Implementing top

21 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/45 Stapelimplementierung auf unbeschränkten Arrays push(41) top top

22 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/45 Stapelimplementierung auf unbeschränkten Arrays push(41) push(11) top top top

23 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/45 Stapelimplementierung auf unbeschränkten Arrays : : push(41) push(11) pop() ^ :8 top top top top

24 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 16/45 Stapelimplementierung auf unbeschränkten Arrays 1 bool isempty(stack s) { 2 return (s.top == -1); 3 } 5 void push(stack s, Element e) { 6 s.top = s.top + 1; 7 s[s.top] = e; 8 } 10 Element pop(stack s) { 11 Element e = s[s.top]; 12 s.top = s.top - 1; 13 return e; 14 } PI beoor : rather qµ tp # top

25 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 16/45 Stapelimplementierung auf unbeschränkten Arrays 1 bool isempty(stack s) { 2 return (s.top == -1); 3 } I Die Laufzeit ist jeweils (1). 5 void push(stack s, Element e) { 6 s.top = s.top + 1; 7 s[s.top] = e; 8 } 10 Element pop(stack s) { 11 Element e = s[s.top]; 12 s.top = s.top - 1; 13 return e; 14 }

26 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 16/45 Stapelimplementierung auf unbeschränkten Arrays 1 bool isempty(stack s) { 2 return (s.top == -1); 3 } 5 void push(stack s, Element e) { 6 s.top = s.top + 1; 7 s[s.top] = e; 8 } 10 Element pop(stack s) { 11 Element e = s[s.top]; 12 s.top = s.top - 1; 13 return e; 14 } - I Die Laufzeit ist jeweils (1). I In pop muss der Fall eines leeren Stapels nicht berücksichtigt werden. Warum? i E()\{ Vorbedmgnng s sei nicht leer

27 Joost-Pieter Katoen Datenstrukturen und Algorithmen 16/45 Elementare Datenstrukturen Stapel und Warteschlangen Stapelimplementierung auf unbeschränkten Arrays 1 bool isempty(stack s) { 2 return (s.top == -1); 3 } 5 void push(stack s, Element e) { 6 s.top = s.top + 1; 7 s[s.top] = e; 8 } 10 Element pop(stack s) { 11 Element e = s[s.top]; 12 s.top = s.top - 1; 13 return e; 14 } I Die Laufzeit ist jeweils (1). I In pop muss der Fall eines leeren Stapels nicht berücksichtigt werden. Warum? I Eine Implementierung als verkettete Liste vermeidet eine a priori Festlegung der Arraygröße.

28 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 17/45 Warteschlangenimplementierung auf beschränkten - Arrays (I) = tail head I

29 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 17/45 Warteschlangenimplementierung auf beschränkten Arrays (I) tail head head enq(0) tail

30 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 17/45 Warteschlangenimplementierung auf beschränkten Arrays (I) tail head head head enq(0) enq(9) tail 9 tail

31 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 17/45 Warteschlangenimplementierung auf beschränkten Arrays (I) tail head head head 0 17 head enq(0) enq(9) deq() tail 9 tail 9 tail

32 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 17/45 Warteschlangenimplementierung auf beschränkten Arrays (I) tail head head head 0 17 head 0 head enq(0) enq(9) deq() deq() tail 9 tail 9 tail 9 tail

33 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 18/45 Warteschlangenimplementierung auf beschränkten Arrays (II) 1 bool isempty(queue q) { 2 return (q.head == q.tail); 3 } 5 void enqueue( 6 Queue q, 7 Element e 8 ) { 9 q[q.tail] = e; 10 q.tail = (q.tail + 1) mod N; 11 } 13 Element dequeue(queue q) { 14 Element e = q[q.head]; 15 q.head = (q.head + 1) mod N; 16 return e; 17 } I Arraygröße N. Nero

34 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 18/45 Warteschlangenimplementierung auf beschränkten Arrays (II) 1 bool isempty(queue q) { 2 return (q.head == q.tail); 3 } I Arraygröße N. I Die Laufzeit ist jeweils (1). 5 void enqueue( 6 Queue q, 7 Element e 8 ) { 9 q[q.tail] = e; 10 q.tail = (q.tail + 1) mod N; 11 } 13 Element dequeue(queue q) { 14 Element e = q[q.head]; 15 q.head = (q.head + 1) mod N; 16 return e; 17 }

35 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 18/45 Warteschlangenimplementierung auf beschränkten Arrays (II) 1 bool isempty(queue q) { 2 return (q.head == q.tail); 3 } 5 void enqueue( 6 Queue q, 7 Element e 8 ) { 9 q[q.tail] = e; 10 q.tail = (q.tail + 1) mod N; 11 } I Arraygröße N. I Die Laufzeit ist jeweils (1). I Der Einfachheit halber werden Überläufe nicht abgefangen. 13 Element dequeue(queue q) { 14 Element e = q[q.head]; 15 q.head = (q.head + 1) mod N; 16 return e; 17 }

36 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 18/45 Warteschlangenimplementierung auf beschränkten Arrays (II) 1 bool isempty(queue q) { 2 return (q.head == q.tail); 3 } 5 void enqueue( 6 Queue q, 7 Element e 8 ) { 9 q[q.tail] = e; 10 q.tail = (q.tail + 1) mod N; 11 } 13 Element dequeue(queue q) { 14 Element e = q[q.head]; 15 q.head = (q.head + 1) mod N; 16 return e; 17 } I Arraygröße N. I Die Laufzeit ist jeweils (1). I Der Einfachheit halber werden Überläufe nicht abgefangen. I Die Queue ist voll gdw. q.head == (q.tail + 1) mod N. % tail µ head %

37 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 19/45 Die Prioritätswarteschlange (I) I Betrachte Elemente, die mit einem Schlüssel (key) versehen sind. I Jeder Schlüssel sei höchstens an ein Element vergeben. I Schlüssel werden als Priorität betrachtet. I Die Elemente werden nach ihrer Priorität sortiert. easy ED

38 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 19/45 Die Prioritätswarteschlange (I) I Betrachte Elemente, die mit einem Schlüssel (key) versehen sind. I Jeder Schlüssel sei höchstens an ein Element vergeben. I Schlüssel werden als Priorität betrachtet. I Die Elemente werden nach ihrer Priorität sortiert. Prioritätswarteschlange (priority queue) Eine Prioritätswarteschlange speichert eine Ansammlung von Elementen und bietet folgende Operationen: I bool isempty(priorityqueue pq) gibt true zurück, wenn pq leer ist, andernfalls false. =. I void insert(priorityqueue pq, Element e, int k) fügt das. Element e mit dem Schlüssel k in pq ein. e- I Element getmin(priorityqueue pq) gibt das Element mit dem kleinsten Schlüssel zurück; benötigt nicht-leere pq. - æ

39 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 20/45 Die Prioritätswarteschlange (II) Prioritätswarteschlange (priority queue) (Forts.) I void delmin(priorityqueue pq) entfernt das Element mit dem kleinsten Schlüssel; benötigt nicht-leere pq. I Element getelt(priorityqueue pq, int k) gibt das Element e mit dem Schlüssel k aus pq zurück; k muss in pq enthalten sein. I void decrkey(priorityqueue pq, a Element e, int k) setzt den Schlüssel von Element e auf k; e muss in pq enthalten sein. k muss außerdem kleiner als der # bisherige Schlüssel von e sein. Wichtige Datenstruktur für Greedy-Algorithmen, Diskrete-Event-Simulationen, ' - vote

40 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 21/45 - Prioritätswarteschlange, unsortiert, auf beschränkten Arrays = tail head schwarz = Element; rot = Schlüssel

41 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 21/45 Prioritätswarteschlange, unsortiert, auf beschränkten Arrays tail head head ins(0,12) tail schwarz = Element; rot = Schlüssel

42 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 21/45 Prioritätswarteschlange, unsortiert, auf beschränkten Arrays tail head head head ins(0,12) ins(3,7) tail 3 7 tail schwarz = Element; rot = Schlüssel

43 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 21/45 Prioritätswarteschlange, unsortiert, auf beschränkten Arrays tail head ins(0,12) head head 12 8 ins(3,7) delmin() head tail 3 7 tail tail schwarz = Element; rot = Schlüssel

44 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 21/45 Prioritätswarteschlange, unsortiert, auf beschränkten Arrays tail head ins(0,12) FEE head head head ins(3,7) delmin() getelt(12) tail 3 7 tail tail schwarz = Element; rot = Schlüssel

45 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 22/45 Prioritätswarteschlange, sortiert, auf beschränkten Arrays = 0 - tail head

46 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 22/45 Prioritätswarteschlange, sortiert, auf beschränkten Arrays tail head head *o0 ins(0,12) tail

47 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 22/45 Prioritätswarteschlange, sortiert, auf beschränkten Arrays tail head 0 12 Otto head head ins(0,12) ins(3,7) tail 0 12 tail

48 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 22/45 Prioritätswarteschlange, sortiert, auf beschränkten Arrays tail head head head O - head ins(0,12) ins(3,7) delmin() tail 0 12 tail 0 12 tail

49 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 22/45 Prioritätswarteschlange, sortiert, auf beschränkten Arrays a ) tail head head head head 0 ins(0,12) ins(3,7) 0 delmin() getelt(12) tail 0 12 tail O 0 12 tail

50 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 23/45 Zwei Prioritätswarteschlangenimplementierungen { Implementierung Operation unsortiertes Array sortiertes Array isempty(pq) insert(pq,e,k) getmin(pq) delmin(pq) getelt(pq,k) decrkey(pq,e,k) - - I In Vorlesung 8 (Heapsort) werden wir eine weitere Implementierung kennenlernen. ú

51 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 23/45 Zwei Prioritätswarteschlangenimplementierungen Implementierung Operation unsortiertes Array sortiertes Array isempty(pq) (1) (1) insert(pq,e,k) getmin(pq) delmin(pq) getelt(pq,k) decrkey(pq,e,k) I In Vorlesung 8 (Heapsort) werden wir eine weitere Implementierung kennenlernen. ú

52 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 23/45 Zwei Prioritätswarteschlangenimplementierungen Implementierung Operation unsortiertes Array sortiertes Array isempty(pq) (1) (1) insert(pq,e,k) (1) (n) ú getmin(pq) delmin(pq) getelt(pq,k) decrkey(pq,e,k) ; :* Ii E, I In Vorlesung 8 (Heapsort) werden wir eine weitere Implementierung kennenlernen. ú Beinhaltet das Verschieben aller Elemente rechts von k.

53 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 23/45 Zwei Prioritätswarteschlangenimplementierungen Implementierung Operation unsortiertes Array sortiertes Array isempty(pq) (1) (1) insert(pq,e,k) (1) (n) ú getmin(pq) (n) 00 (1) delmin(pq) getelt(pq,k) decrkey(pq,e,k) I In Vorlesung 8 (Heapsort) werden wir eine weitere Implementierung kennenlernen. ú Beinhaltet das Verschieben aller Elemente rechts von k.

54 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 23/45 Zwei Prioritätswarteschlangenimplementierungen Implementierung Operation unsortiertes Array sortiertes Array isempty(pq) (1) (1) insert(pq,e,k) (1) (n) ú getmin(pq) (n) (1) delmin(pq) (n) ú (1) 00 getelt(pq,k) decrkey(pq,e,k) I In Vorlesung 8 (Heapsort) werden wir eine weitere Implementierung kennenlernen. ú Beinhaltet das Verschieben aller Elemente rechts von k.

55 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 23/45 Zwei Prioritätswarteschlangenimplementierungen Implementierung Operation unsortiertes Array sortiertes Array isempty(pq) (1) (1) insert(pq,e,k) (1) (n) ú getmin(pq) (n) (1) delmin(pq) (n) ú (1) getelt(pq,k) 0 (n) (log n) = = decrkey(pq,e,k) I In Vorlesung 8 (Heapsort) werden wir eine weitere Implementierung kennenlernen. ú Beinhaltet das Verschieben aller Elemente rechts von k. Mittels binärer Suche.

56 Stapel und Warteschlangen Joost-Pieter Katoen Datenstrukturen und Algorithmen 23/45 Zwei Prioritätswarteschlangenimplementierungen Implementierung Operation unsortiertes Array sortiertes Array isempty(pq) (1) (1) insert(pq,e,k) (1) (n) ú getmin(pq) (n) (1) delmin(pq) (n) ú (1) getelt(pq,k) (n) (log n) decrkey(pq,e,k) (n) (n) ú Q Q I In Vorlesung 8 (Heapsort) werden wir eine weitere Implementierung kennenlernen. ú Beinhaltet das Verschieben aller Elemente rechts von k. Mittels binärer Suche.

57 Verkettete Listen Joost-Pieter Katoen Datenstrukturen und Algorithmen 24/45 Übersicht 1 Abstrakte Datentypen 2 Stapel und Warteschlangen 3 Verkettete Listen Einfach verkettete Listen Doppelt verkettete Listen 4 Binäre Bäume Traversierungen

58 Verkettete Listen Joost-Pieter Katoen Datenstrukturen und Algorithmen 25/45 Einfach verkettete Listen Einfach verkettete Liste Eine einfach verkettete Liste ist eine rekursive, dynamische Datenstruktur. I Elemente bestehend aus Schlüssel k sowie Zeiger auf ein nachfolgendes Element I Listen können dynamisch erweitert werden I head zeigt auf das erste Element der Liste next head =

59 - Verkettete Listen... Joost-Pieter Katoen Datenstrukturen und Algorithmen 26/45 Listen (I) Liste (ADT) Eine Liste speichert eine Ansammlung von Elementen mit fester Reihenfolge und bietet folgende Operationen: I void insert(list l, Element x, int k) fügt das Element x mit dem Schlüssel k in die Liste ein. I void remove(list l, int k) entfernt ein Vorkommen eines Elements mit Schlüssel k aus der Liste, falls mindestens ein solches Element in der Liste existiert. = - I Element search(list l, int k) gibt das Element mit dem übergebenen Schlüssel k zurück und null falls es kein derartiges Element gibt. =

60 Verkettete Listen Joost-Pieter Katoen Datenstrukturen und Algorithmen 27/45 Listen (II) Liste (Forts.) I Element minimum(list l) gibt das Element mit dem kleinsten Schlüssel zurück. = I Element maximum(list l) gibt das Element mit dem höchsten Schlüssel zurück. I Element successor(list l, int k) gibt das Nachfolgerelement des Elements mit Schlüssel k zurück. = I Element predecessor(list l, int k) gibt das Vorgängerelement des Elements mit Schlüssel k zurück.

61 Verkettete Listen Joost-Pieter Katoen Datenstrukturen und Algorithmen 28/45 Listen (III) Liste (Untertypen) Die Elementreihenfolge kann auf unterschiedliche Arten definiert werden wie z. B. durch folgende (strengere) Spezifikationen der insert Operation: I void insert(list l, Element x, int k) fügt das Element x mit ± dem Schlüssel k am Anfang der Liste ein (entspricht z. B. LinkedList Klasse in Java, wenn man die Methode addfirst als insert Operation verwendet). I void insert(list l, Element x, int k) fügt das Element x mit dem Schlüssel k sortiert nach Schlüsseln in die Liste ein (z. B. bei einer Skiplist). I void insert(list l, Element x, int k) fügt das Element x mit dem Schlüssel k am Ende der Liste ein (entspricht z. B. List Interface in Java, wenn man die Methode add als insert Operation verwendet). Wenn keine näheren Angaben gemacht werden, gehen wir in dieser Vorlesung meist von der ersten dieser drei Spezifikationen aus.

62 Verkettete Listen Joost-Pieter Katoen Datenstrukturen und Algorithmen 29/45 Listen umdrehen { 1 void reverse(list l) { 2 last = l.head; * 3 pos = last.next; * 4 last.next = null; 6 while(pos!= null){ last pos 7 tmp = pos.next; 8 pos.next = last; 9 last = pos; head 10 pos = tmp; % next + 11 } - 13 { l.head = last; T 14 }

63 Verkettete Listen Joost-Pieter Katoen Datenstrukturen und Algorithmen 29/45 Listen umdrehen 1 void reverse(list l) { 2 last = l.head; 3 pos = last.next; 4 last.next = null; 6 while(pos!= null){ 7 tmp = pos.next; 8 pos.next = last; 9 last = pos; { 10 pos = tmp; 11 } last pos. In 13 l.head = last; 14 }

64 Verkettete Listen Joost-Pieter Katoen Datenstrukturen und Algorithmen 29/45 Listen umdrehen 1 void reverse(list l) { 2 last = l.head; 3 pos = last.next; 4 last.next = null; 6 while(pos!= null){ 7 tmp = pos.next; - 8 pos.next = last; 9 last = pos; 10 pos = tmp; 11 } * ney last pos tmp Ft 13 l.head = last; 14 }

65 Verkettete Listen Joost-Pieter Katoen Datenstrukturen und Algorithmen 29/45 Listen umdrehen 1 void reverse(list l) { 2 last = l.head; 3 pos = last.next; 4 last.next = null; 6 while(pos!= null){ 7 tmp = pos.next; 8 pos.next = last; 9 last = pos; 10 pos = tmp; 11 } 13 l.head = last; 14 } tag X pos last pos tmp

66 Verkettete Listen Joost-Pieter Katoen Datenstrukturen und Algorithmen 29/45 Listen umdrehen 1 void reverse(list l) { 2 last = l.head; 3 pos = last.next; 4 last.next = null; 6 while(pos!= null){ 7 tmp = pos.next; 8 pos.next = last; 9 last = pos; 10 pos = tmp; 11 } 13 l.head = last; 14 } pos/last tmp

67 Verkettete Listen Joost-Pieter Katoen Datenstrukturen und Algorithmen 29/45 Listen umdrehen 1 void reverse(list l) { 2 last = l.head; 3 pos = last.next; 4 last.next = null; 6 while(pos!= null){ 7 tmp = pos.next; 8 pos.next = last; 9 last = pos; 10 pos = tmp; 11 } { 13 l.head = last; 14 } last0 0 tmp/pos in ±*o

68 Verkettete Listen Joost-Pieter Katoen Datenstrukturen und Algorithmen 29/45 Listen umdrehen 1 void reverse(list l) { 2 last = l.head; 3 pos = last.next; 4 last.next = null; 6 while(pos!= null){ 7 tmp = pos.next; 8 pos.next = last; 9 last = pos; 10 pos = tmp; 11 } 13 l.head = last; 14 } last pos

69 Verkettete Listen Joost-Pieter Katoen Datenstrukturen und Algorithmen 30/45 Doppelt verkettete Listen Doppelt verkettete Liste Eine doppelt verkettete Liste kann sowohl vorwärts als auch rückwärts durchlaufen werden. Sie implementiert den ADT Liste. I Elemente besitzen neben Schlüssel und Nachfolgender einen weiteren Zeiger auf das vorherige Element. I Zusätzlicher Zeiger tail zeigt auf das letzte Element der Liste g next prev head tail

70 Verkettete Listen Joost-Pieter Katoen Datenstrukturen und Algorithmen 31/45 Laufzeiten Implementierung Operation einfach verkette Liste doppelt verkettete Liste insert(l,x,k) remove(l,k) search(l,k) minimum(l) maximum(l) successor(l,k) predecessor(l,k) { - -

71 Verkettete Listen Joost-Pieter Katoen Datenstrukturen und Algorithmen 31/45 Laufzeiten 133*7-1*1.31 # I Implementierung In Operation einfach verkette Liste doppelt verkettete Liste insert(l,x,k) (1) (1) remove(l,k) search(l,k) minimum(l) maximum(l) successor(l,k) predecessor(l,k)

72 Verkettete Listen Joost-Pieter Katoen Datenstrukturen und Algorithmen 31/45 Laufzeiten Implementierung Operation einfach verkette Liste doppelt verkettete Liste insert(l,x,k) (1) (1) remove(l,k) (n) (n) = search(l,k) = = minimum(l) maximum(l) successor(l,k) predecessor(l,k)

73 Verkettete Listen Joost-Pieter Katoen Datenstrukturen und Algorithmen 31/45 Laufzeiten Implementierung Operation einfach verkette Liste doppelt verkettete Liste insert(l,x,k) (1) (1) remove(l,k) (n) (n) search(l,k) (n) (n) minimum(l) maximum(l) successor(l,k) predecessor(l,k)

74 Verkettete Listen Joost-Pieter Katoen Datenstrukturen und Algorithmen 31/45 Laufzeiten Implementierung Operation einfach verkette Liste doppelt verkettete Liste insert(l,x,k) (1) (1) remove(l,k) (n) (n) search(l,k) (n) (n) minimum(l) (n) (n) maximum(l) successor(l,k) predecessor(l,k)

75 Verkettete Listen Joost-Pieter Katoen Datenstrukturen und Algorithmen 31/45 Laufzeiten Implementierung Operation einfach verkette Liste doppelt verkettete Liste insert(l,x,k) (1) (1) remove(l,k) (n) (n) search(l,k) (n) (n) minimum(l) (n) (n) maximum(l) (n) (n) successor(l,k) predecessor(l,k)

76 Verkettete Listen Joost-Pieter Katoen Datenstrukturen und Algorithmen 31/45 Laufzeiten Implementierung Operation einfach verkette Liste doppelt verkettete Liste insert(l,x,k) (1) (1) remove(l,k) (n) (n) search(l,k) (n) (n) minimum(l) (n) (n) maximum(l) (n) (n) successor(l,k) O (n) (n) predecessor(l,k)

77 Verkettete Listen Joost-Pieter Katoen Datenstrukturen und Algorithmen 31/45 Laufzeiten Implementierung Operation einfach verkette Liste doppelt verkettete Liste insert(l,x,k) (1) (1) remove(l,k) (n) (n) search(l,k) (n) (n) minimum(l) (n) (n) maximum(l) (n) (n) successor(l,k) (n) (n) predecessor(l,k) (n) (n)

78 Verkettete Listen Joost-Pieter Katoen Datenstrukturen und Algorithmen 31/45 Laufzeiten Implementierung Operation einfach verkette Liste doppelt verkettete Liste insert(l,x,k) (1) (1) remove(l,k) (n) (n) search(l,k) (n) (n) minimum(l) (n) (n) maximum(l) (n) (n) successor(l,k) (n) (n) predecessor(l,k) (n) (n) I Suchen eines Schlüssels erfordert einen Durchlauf der gesamten Liste. Gibt es andere Möglichkeiten, die Daten zu organisieren?

79 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 32/45 Übersicht 1 Abstrakte Datentypen 2 Stapel und Warteschlangen 3 Verkettete Listen Einfach verkettete Listen Doppelt verkettete Listen 4 Binäre Bäume Traversierungen

80 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 33/45 Binärbäume

81 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 34/45 Binärbäume Intuition Binärbaum Intuition Betrachte einen binären Baum: O I Jedes Element bekommt zwei Zeiger (left und right) zuden nachfolgenden Elementen. I Man erhält in etwa folgende Datenstruktur: Vater/Mutter von B und C 0A 12 Schlüssel Linkes Kind von A B0 6 left right OC 225 Rechtes Kind von A

82 - Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 35/45 - Binärbäume Definition Definition (Binärbaum) Ein Binärbaum (binary tree) ist ein gerichteter, zykelfreier Graph (V, E) - mit Knoten (nodes, allgemein: vertices) V und gerichteten Kanten (edges) E V V. - I Es gibt genau einen ausgezeichneten Knoten, die Wurzel (root). I Alle Kanten zeigen von der Wurzel weg. I Der Ausgangsgrad (out-degree) jedes Knotens ist höchstens 2. I Der Eingangsgrad eines Knoten ist 1, bzw. 0 bei der Wurzel. I Sonderfall: Baum mit V = E =?. go # 0 biiar

83 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 36/45 Binärbäume Begri e (I) 102 Wurzel Ebene 0 Höhe des Binärbaums = innerer Knoten Ebene 1 Ebene 2 Ebene 3 Blatt

84 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 37/45 Binärbäume Begri e (II) Definition (Binärbaum Begri e) I Ein Knoten mit leerem linken und rechten Teilbaum heißt Blatt (leaf). I Die Tiefe (depth) (auch: Ebene / level) eines Knotens ist sein Abstand, d. h. die Pfadlänge, von der Wurzel. I Die Höhe (height) eines Baumes ist die maximale Tiefe seiner Blätter.

85 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 37/45 Binärbäume Begri e (II) Definition (Binärbaum Begri e) I Ein Knoten mit leerem linken und rechten Teilbaum heißt Blatt (leaf). I Die Tiefe (depth) (auch: Ebene / level) eines Knotens ist sein Abstand, d. h. die Pfadlänge, von der Wurzel. I Die Höhe (height) eines Baumes ist die maximale Tiefe seiner Blätter. Beispiel (Vorteile von binären Bäumen) Angenommen, man möchte 31 Elemente vorhalten: Ebene 0 (Wurzel) enthält 1 Element Gesamt: Ebene 1 enthält 2 Elemente 3 Ebene 2 enthält 4 Elemente 7 Ebene 3 enthält 8 Elemente 15 Ebene 4 enthält 16 Elemente 31

86 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 37/45 Binärbäume Begri e (II) Definition (Binärbaum Begri e) I Ein Knoten mit leerem linken und rechten Teilbaum heißt Blatt (leaf). I Die Tiefe (depth) (auch: Ebene / level) eines Knotens ist sein Abstand, d. h. die Pfadlänge, von der Wurzel. I Die Höhe (height) eines Baumes ist die maximale Tiefe seiner Blätter. Beispiel (Vorteile von binären Bäumen) Angenommen, man möchte 31 Elemente vorhalten: Ebene 0 (Wurzel) enthält 1 Element Gesamt: Ebene 1 enthält 2 Elemente 3 Ebene 2 enthält 4 Elemente 7 Ebene 3 enthält 8 Elemente 15 Ebene 4 enthält 16 Elemente 31 Ein Element kann in 5 Schritten (statt 31) erreicht werden.

87 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 38/45 Einige Fakten über binäre Bäume II { a ei Lemma (Übung) I Ebene d enthält höchstens 2 d Knoten. I Ein Binärbaum mit Höhe h kann maximal 2 h+1 1 Knoten enthalten. I Enthält er n Knoten, dann hat er mindestens Höhe Álog(n+1)Ë 1 (log log 2 ).

88 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 38/45 Einige Fakten über binäre Bäume h=4 2h " - ^ = 31 Lemma (Übung) I Ebene d enthält höchstens 2 d Knoten. I Ein Binärbaum mit Höhe h kann maximal 2 h+1 1 Knoten enthalten. I Enthält er n Knoten, dann hat er mindestens Höhe Álog(n+1)Ë 1 (log log 2 ). Definition (vollständig) Ein Binärbaum heißt vollständig, wenn er bei Höhe h alle 2 h+1 1 Knoten - enthält.

89 Binäre Bäume Traversierung Traversierung Eine Traversierung ist ein Baumdurchlauf mit folgenden Eigenschaften: 1. Die Traversierung beginnt und endet an der Wurzel. 2. Die Traversierung folgt den Kanten des Baumes. Jede Kante wird genau zweimal durchlaufen: Einmal von oben nach unten und danach von unten nach oben Die Teilbäume eines Knotens werden in festgelegter Reihenfolge (zuerst linker, dann rechter Teilbaum) besucht. 4. Unterschiede bestehen darin, bei welchem Durchlauf man den Knoten selbst (bzw. das dort gespeicherte Element) besucht. eg Dr lire ; e. e. r Joost-Pieter Katoen Datenstrukturen und Algorithmen 39/45

90 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 40/45 Inorder-Traversierung + ú / void inorder(node node) { 2 if (node!= null) { 3 "(" 4 inorder(node.left); 5 print(node); 6 inorder(node.right); 7 ")" 8 } 9 } ee. Beispiel Linearisierung Eine Aufzählung aller Elemente eines Baumes in der Reihenfolge einer bestimmten Traversierung (ohne Klammern) nennt man Linearisierung.

91 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 40/45 Inorder-Traversierung + ú / void inorder(node node) { 2 if (node!= null) { 3 "(" 4 inorder(node.left); 5 print(node); 6 inorder(node.right); 7 ")" 8 } 9 } Beispiel ( Linearisierung Eine Aufzählung aller Elemente eines Baumes in der Reihenfolge einer bestimmten Traversierung (ohne Klammern) nennt man Linearisierung.

92 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 40/45 Inorder-Traversierung + ú / void inorder(node node) { 2 if (node!= null) { 3 "(" 4 inorder(node.left); 5 print(node); 6 inorder(node.right); 7 ")" 8 } 9 } Beispiel (( Linearisierung Eine Aufzählung aller Elemente eines Baumes in der Reihenfolge einer bestimmten Traversierung (ohne Klammern) nennt man Linearisierung.

93 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 40/45 Inorder-Traversierung + ú / void inorder(node node) { 2 if (node!= null) { 3 "(" 4 inorder(node.left); 5 print(node); 6 inorder(node.right); 7 ")" 8 } 9 } Beispiel (( ( Linearisierung Eine Aufzählung aller Elemente eines Baumes in der Reihenfolge einer bestimmten Traversierung (ohne Klammern) nennt man Linearisierung.

94 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 40/45 Inorder-Traversierung + ú / void inorder(node node) { 2 if (node!= null) { 3 "(" 4 inorder(node.left); 5 print(node); 6 inorder(node.right); 7 ")" 8 } 9 } Beispiel (( (8 Linearisierung Eine Aufzählung aller Elemente eines Baumes in der Reihenfolge einer bestimmten Traversierung (ohne Klammern) nennt man Linearisierung.

95 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 40/45 Inorder-Traversierung + ú / void inorder(node node) { 2 if (node!= null) { 3 "(" 4 inorder(node.left); 5 print(node); 6 inorder(node.right); 7 ")" 8 } 9 } Beispiel (( (8/ Linearisierung Eine Aufzählung aller Elemente eines Baumes in der Reihenfolge einer bestimmten Traversierung (ohne Klammern) nennt man Linearisierung.

96 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 40/45 Inorder-Traversierung + ú / void inorder(node node) { 2 if (node!= null) { 3 "(" 4 inorder(node.left); 5 print(node); 6 inorder(node.right); 7 ")" 8 } 9 } Beispiel (( (8/4 Linearisierung Eine Aufzählung aller Elemente eines Baumes in der Reihenfolge einer bestimmten Traversierung (ohne Klammern) nennt man Linearisierung.

97 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 40/45 Inorder-Traversierung + ú / void inorder(node node) { 2 if (node!= null) { 3 "(" 4 inorder(node.left); 5 print(node); 6 inorder(node.right); 7 ")" 8 } 9 } Beispiel (( (8/4) Linearisierung Eine Aufzählung aller Elemente eines Baumes in der Reihenfolge einer bestimmten Traversierung (ohne Klammern) nennt man Linearisierung.

98 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 40/45 Inorder-Traversierung + ú / void inorder(node node) { 2 if (node!= null) { 3 "(" 4 inorder(node.left); 5 print(node); 6 inorder(node.right); 7 ")" 8 } 9 } Beispiel (( (8/4)) Linearisierung Eine Aufzählung aller Elemente eines Baumes in der Reihenfolge einer bestimmten Traversierung (ohne Klammern) nennt man Linearisierung.

99 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 40/45 Inorder-Traversierung + ú / void inorder(node node) { 2 if (node!= null) { 3 "(" 4 inorder(node.left); 5 print(node); 6 inorder(node.right); 7 ")" 8 } 9 } Beispiel (( (8/4)) + Linearisierung Eine Aufzählung aller Elemente eines Baumes in der Reihenfolge einer bestimmten Traversierung (ohne Klammern) nennt man Linearisierung.

100 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 40/45 Inorder-Traversierung + ú / void inorder(node node) { 2 if (node!= null) { 3 "(" 4 inorder(node.left); 5 print(node); 6 inorder(node.right); 7 ")" 8 } 9 } Beispiel (( (8/4)) + ( Linearisierung Eine Aufzählung aller Elemente eines Baumes in der Reihenfolge einer bestimmten Traversierung (ohne Klammern) nennt man Linearisierung.

101 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 40/45 Inorder-Traversierung + ú / void inorder(node node) { 2 if (node!= null) { 3 "(" 4 inorder(node.left); 5 print(node); 6 inorder(node.right); 7 ")" 8 } 9 } Beispiel (( (8/4)) + (3 Linearisierung Eine Aufzählung aller Elemente eines Baumes in der Reihenfolge einer bestimmten Traversierung (ohne Klammern) nennt man Linearisierung.

102 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 40/45 Inorder-Traversierung + ú / void inorder(node node) { 2 if (node!= null) { 3 "(" 4 inorder(node.left); 5 print(node); 6 inorder(node.right); 7 ")" 8 } 9 } Beispiel (( (8/4)) + (3 ú Linearisierung Eine Aufzählung aller Elemente eines Baumes in der Reihenfolge einer bestimmten Traversierung (ohne Klammern) nennt man Linearisierung.

103 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 40/45 Inorder-Traversierung + ú / void inorder(node node) { 2 if (node!= null) { 3 "(" 4 inorder(node.left); 5 print(node); 6 inorder(node.right); 7 ")" 8 } 9 } Beispiel (( (8/4)) + (3 ú 5 Linearisierung Eine Aufzählung aller Elemente eines Baumes in der Reihenfolge einer bestimmten Traversierung (ohne Klammern) nennt man Linearisierung.

104 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 40/45 Inorder-Traversierung + ú / void inorder(node node) { 2 if (node!= null) { 3 "(" 4 inorder(node.left); 5 print(node); 6 inorder(node.right); 7 ")" 8 } 9 } Beispiel (( (8/4)) + (3 ú 5) Linearisierung Eine Aufzählung aller Elemente eines Baumes in der Reihenfolge einer bestimmten Traversierung (ohne Klammern) nennt man Linearisierung.

105 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 40/45 Inorder-Traversierung + ú / void inorder(node node) { 2 if (node!= null) { 3 "(" 4 inorder(node.left); 5 print(node); 6 inorder(node.right); 7 ")" 8 } 9 } Beispiel (( (8/4)) + (3 ú 5)) Linearisierung Eine Aufzählung aller Elemente eines Baumes in der Reihenfolge einer bestimmten Traversierung (ohne Klammern) nennt man Linearisierung.

106 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 41/45 Preorder, Inorder, Postorder (I) + / 8 4 ú void inorder(node node) { 2 if (node!= null) { 3 inorder(node.left); 4 print(node); 5 inorder(node.right); 6 } 7 } Beispiel (Inorder) 8 / ú 5

107 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 41/45 Preorder, Inorder, Postorder (I) + / 8 4 ú void preorder(node node) { 2 if (node!= null) { 3 print(node); 4 preorder(node.left); 5 preorder(node.right); 6 } 7 } Beispiel (Inorder) 8 / ú 5 Beispiel (Preorder) + / 84ú 35

108 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 41/45 Preorder, Inorder, Postorder (I) + / 8 4 ú void postorder(node node) { 2 if (node!= null) { 3 postorder(node.left); 4 postorder(node.right); 5 print(node); 6 } 7 } Beispiel (Inorder) 8 / ú 5 Beispiel (Preorder) + / 84ú 35 Beispiel (Postorder Umgekehrte Polnische Notation (RPN)) 84/ 35ú + neg

109 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 42/45 Preorder, Inorder, Postorder-Traversierung 1 void preorder(node node) { 2 if (node!= null) { 3 visit(node); 4 preorder(node.left); 5 preorder(node.right); 6 } 7 } 16 void postorder(node node) { 17 if (node!= null) { 18 postorder(node.left); 19 postorder(node.right); 20 visit(node); 21 } 22 } 9 void inorder(node node) { 10 if (node!= null) { 11 inorder(node.left); 12 visit(node); 13 inorder(node.right); 14 } 15 } Komplexität (n), wobei n die Anzahl der Knoten ist.

110 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 43/45 Preorder, Inorder, Postorder (II) Satz Ist von einem (unbekannten) Binärbaum mit eindeutigen Werten sowohl die Inorder-Linearisierung als auch entweder die Preorder- oder die Postorder-Linearisierung gegeben, dann ist der Baum eindeutig bestimmt. Beispiel (Rekonstruktion aus Inorder- und Preorder-Linearisierung) Inorder:

111 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 43/45 Preorder, Inorder, Postorder (II) Satz Ist von einem (unbekannten) Binärbaum mit eindeutigen Werten sowohl die Inorder-Linearisierung als auch entweder die Preorder- oder die Postorder-Linearisierung gegeben, dann ist der Baum eindeutig bestimmt. Beispiel (Rekonstruktion aus Inorder- und Preorder-Linearisierung) Inorder: Preorder:

112 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 43/45 Preorder, Inorder, Postorder (II) Satz Ist von einem (unbekannten) Binärbaum mit eindeutigen Werten sowohl die Inorder-Linearisierung als auch entweder die Preorder- oder die Postorder-Linearisierung gegeben, dann ist der Baum eindeutig bestimmt. Beispiel (Rekonstruktion aus Inorder- und Preorder-Linearisierung) Inorder: Preorder:

113 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 44/45 Zusammenfassung I ADTs: Spezifikation und Implementierung I Stapel, Warteschlangen, Prioritätswarteschlangen I einfach und doppelt verkettete Listen I Binäre Bäume

114 Binäre Bäume Joost-Pieter Katoen Datenstrukturen und Algorithmen 45/45 Nächste Vorlesung Nächste Vorlesung Freitag 27. April, 13:15 (H01). Bis dann!

Übersicht. Datenstrukturen und Algorithmen. Abstrakte Datentypen. Übersicht. Vorlesung 3: Elementare Datenstrukturen (K10)

Übersicht. Datenstrukturen und Algorithmen. Abstrakte Datentypen. Übersicht. Vorlesung 3: Elementare Datenstrukturen (K10) Übersicht Datenstrukturen und Algorithmen Vorlesung 3: (K10) Joost-Pieter Katoen (Christian Dehnert) Lehrstuhl für nformatik 2 Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/

Mehr

Elementare Datenstrukturen

Elementare Datenstrukturen Organisatorisches VL-09: Elementare Datenstrukturen (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Sprechstunde: Mittwoch 11:15 12:00 Übungen:

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 1/54 Datenstrukturen und Algorithmen Vorlesungen 4-5: Datenstrukturen (K10) Prof. Dr. Erika Ábrahám Theorie Hybrider Systeme Informatik 2 http://ths.rwth-aachen.de/teaching/ss-14/

Mehr

Übersicht Datenstrukturen und Algorithmen. Übersicht. Datentypen. Vorlesungen 4-5: Datenstrukturen (K10) Prof. Dr. Erika Ábrahám

Übersicht Datenstrukturen und Algorithmen. Übersicht. Datentypen. Vorlesungen 4-5: Datenstrukturen (K10) Prof. Dr. Erika Ábrahám Übersicht und Algorithmen Vorlesungen 4-5: (K10) 1 Theorie Hybrider Systeme nformatik 2 http://ths.rwth-aachen.de/teaching/ss-14/ datenstrukturen-und-algorithmen/ Diese Präsentation verwendet in Teilen

Mehr

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015 Datenstrukturen und Algorithmen Vorlesung 8: (K6) 1 Joost-Pieter Katoen Lehrstuhl für Informatik Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/ 7. Mai 015 3 Joost-Pieter

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 11 (4.6.2014) Binäre Suchbäume II Algorithmen und Komplexität Binäre Suchbäume Binäre Suchbäume müssen nicht immer so schön symmetrisch sein

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 10 (27.5.2016) Binäre Suchbäume II Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:

Mehr

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B3.1 Einführung. B3.2 Verkettete Liste. B3.3 Bäume

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B3.1 Einführung. B3.2 Verkettete Liste. B3.3 Bäume Algorithmen und Datenstrukturen 22. März 2018 B3. Verkettete Listen und Bäume Algorithmen und Datenstrukturen B3. Verkettete Listen und Bäume B3.1 Einführung Marcel Lüthi and Gabriele Röger B3.2 Verkettete

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen B3. Verkettete Listen und Bäume Marcel Lüthi and Gabriele Röger Universität Basel 22. März 2018 Einführung Abstrakter Datentyp / Datenstruktur Abstrakter Datentyp Eine Menge

Mehr

Sortieren II / HeapSort Heaps

Sortieren II / HeapSort Heaps Organisatorisches VL-07: Sortieren II: HeapSort (Datenstrukturen und Algorithmen, SS 2017) Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Email: dsal-i1@algo.rwth-aachen.de Webseite: http://algo.rwth-aachen.de/lehre/ss17/dsa.php

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 13 (8.6.2016) Graphenalgorithmen I Algorithmen und Komplexität Graphen Knotenmenge V, typischerweise n V Kantenmenge E, typischerweise

Mehr

11. Elementare Datenstrukturen

11. Elementare Datenstrukturen 11. Elementare Datenstrukturen Definition 11.1: Eine dynamische Menge ist gegeben durch eine oder mehrer Mengen von Objekten sowie Operationen auf diesen Mengen und den Objekten der Mengen. Dynamische

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 12 (4.6.2018) Graphenalgorithmen I Yannic Maus Algorithmen und Komplexität Graphen Knotenmenge V, typischerweise n V Kantenmenge E, typischerweise

Mehr

Übung 3 Musterlösung

Übung 3 Musterlösung Prof aa Dr Ir Joost-Pieter Katoen Sebastian Junges, Benjamin Kaminski, David Korzeniewski, Tim Quatmann Hinweise: Übung 3 Musterlösung Die Lösungen müssen bis Donnerstag, den 03 Mai um 16:00 Uhr in den

Mehr

Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1

Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1 Teil : Suchen Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume (Wiederholung aus Prog 2) Bäume: Begriffe, Eigenschaften und Traversierung Binäre Suchbäume Gefädelte Suchbäume Ausgeglichene

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Einführung in die Informatik 2 Listen & Bäume Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 SvenKosub@uni-konstanzde Sprechstunde: Freitag, 14:00-15:00 Uhr, onv Sommersemester

Mehr

Algorithmen und Datenstrukturen. Bäume. M. Herpers, Y. Jung, P. Klingebiel

Algorithmen und Datenstrukturen. Bäume. M. Herpers, Y. Jung, P. Klingebiel Algorithmen und Datenstrukturen Bäume M. Herpers, Y. Jung, P. Klingebiel 1 Lernziele Baumstrukturen und Ihre Verwendung kennen Grundbegriffe zu Bäumen anwenden können Baumstruktur in C anlegen können Suchbäume

Mehr

DSAL - 4. Globalübung. Benjamin Kaminski, Tim Quatmann. 15. Mai 2018

DSAL - 4. Globalübung. Benjamin Kaminski, Tim Quatmann. 15. Mai 2018 . Bis. VL iib DSAL - 4. Globalübung St_offf-Pra@bungo.B :S inkl. Benjamin Kaminski, Tim Quatmann 10 15. Mai 2018 inhl. G Zuliissige Hilfsmittec Ein seblst besohriebenes : Din All Blatt. Benjamin Kaminski,

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 10 (28.5.2018) Binäre Suchbäume II Algorithmen und Komplexität Binäre Suchbäume Binäre Suchbäume müssen nicht immer so schön symmetrisch

Mehr

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing Algorithmen I Tutorium 1-3. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-02 Überblick 1 Sortieren und Suchen 2 Mastertheorem 3 Datenstrukturen 4 Kreativaufgabe

Mehr

Natürliche Bäume. (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun. Letzte Änderung: :16. Natürliche Bäume 1/16

Natürliche Bäume. (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun. Letzte Änderung: :16. Natürliche Bäume 1/16 Natürliche Bäume (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun Letzte Änderung: 18.03.2018 18:16 Natürliche Bäume 1/16 Bäume Begriffe (1/2) Bäume sind verallgemeinerte Listenstrukturen ein

Mehr

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B4.1 Definitionen und Eigenschaften. B4.2 Traversierung. B4.

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B4.1 Definitionen und Eigenschaften. B4.2 Traversierung. B4. Algorithmen und Datenstrukturen 28. März 2019 B4. Intermezzo - Bäume Algorithmen und Datenstrukturen B4. Intermezzo - Bäume B4.1 Definitionen und Eigenschaften Marcel Lüthi and Gabriele Röger Universität

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Einführung in die Informatik 2 Bäume & Graphen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz http://www.inf.uni-konstanz.de/algo/lehre/ss08/info2 Sommersemester 2008 Sven Kosub

Mehr

16. Dynamische Datenstrukturen

16. Dynamische Datenstrukturen Datenstrukturen 6. Dynamische Datenstrukturen Eine Datenstruktur organisiert Daten so in einem Computer, dass man sie effizient nutzen kann. Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange

Mehr

12. Dynamische Datenstrukturen

12. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Implementationsvarianten der verketteten Liste 0 04 Motivation: Stapel ( push, pop, top, empty

Mehr

5.3 Doppelt verkettete Listen

5.3 Doppelt verkettete Listen 5.3 Doppelt verkettete Listen Einfach verkettete Listen unterstützen das Einfügen und Löschen am Anfang in konstanter Zeit; für das Einfügen und Löschen am Ende benötigen sie jedoch lineare Laufzeit Doppelt

Mehr

Kapitel 12: Induktive

Kapitel 12: Induktive Kapitel 12: Induktive Datenstrukturen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter

Mehr

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Abstrakte Datentypen und Datenstrukturen/ Einfache Beispiele Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Datenstruktur (DS): Realisierung

Mehr

Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen. Sebastian Küpper

Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen. Sebastian Küpper Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen Sebastian Küpper Unzulänglichkeit von Feldern Wenn ein Unternehmen alle Rechnungen eines Jahres verwalten möchte,

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München 7 Fortgeschrittene Datenstrukturen Graphen

Mehr

Tutoraufgabe 1 (Implementierung eines ADTs):

Tutoraufgabe 1 (Implementierung eines ADTs): Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Tutoriumslösung - Übung (Abgabe.05.0) F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Implementierung eines ADTs): Wir spezifizieren den ADT

Mehr

Informatik II Prüfungsvorbereitungskurs

Informatik II Prüfungsvorbereitungskurs Informatik II Prüfungsvorbereitungskurs Tag 4, 23.6.2016 Giuseppe Accaputo g@accaputo.ch 1 Programm für heute Repetition Datenstrukturen Unter anderem Fragen von gestern Point-in-Polygon Algorithmus Shortest

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 217 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Graphen, Suchbäume, AVL Bäume Heute: Graphen und Bäume Binäre Suchbäume AVL-Bäume Nächste

Mehr

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Motivation. Vorlesung 10: Binäre Suchbäume

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Motivation. Vorlesung 10: Binäre Suchbäume Übersicht Datenstrukturen und lgorithmen Vorlesung : Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-/dsal/ 1 Suche Einfügen

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. (Sortierte) Listen 2. Stacks & Queues 3. Datenstrukturen 4. Rekursion und vollständige Induktion

Mehr

13. Dynamische Datenstrukturen

13. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Sortierte Liste 40 40 Motivation: Stapel ( push, pop, top, empty ) Wir brauchen einen neuen

Mehr

Bäume. Listen und Bäume, Graphen und Bäume, elementare Eigenschaften von Binärbäumen, Implementierung, Generische Baumdurchläufe

Bäume. Listen und Bäume, Graphen und Bäume, elementare Eigenschaften von Binärbäumen, Implementierung, Generische Baumdurchläufe Bäume Listen und Bäume, Graphen und Bäume, elementare Eigenschaften von Binärbäumen, Implementierung, Generische Baumdurchläufe S. Staab, Informatik für IM II; Folien nach D. Saupe, sowie W. Küchlin, A.

Mehr

Kapitel ADS:IV. IV. Datenstrukturen

Kapitel ADS:IV. IV. Datenstrukturen Kapitel ADS:IV IV. Datenstrukturen Record Container List Linked List Stack Queue Priority Queue Dictionary Direct-address Table Hash Table Hash Function ADS:IV-21 Datenstrukturen POTTHAST 2018 List Definition

Mehr

Datenstrukturen. einfach verkettete Liste

Datenstrukturen. einfach verkettete Liste einfach verkettete Liste speichert Daten in einer linearen Liste, in der jedes Element auf das nächste Element zeigt Jeder Knoten der Liste enthält beliebige Daten und einen Zeiger auf den nächsten Knoten

Mehr

Informatik II Prüfungsvorbereitungskurs

Informatik II Prüfungsvorbereitungskurs Informatik II Prüfungsvorbereitungskurs Tag 4, 9.6.2017 Giuseppe Accaputo g@accaputo.ch 1 Aufbau des PVK Tag 1: Java Teil 1 Tag 2: Java Teil 2 Tag 3: Algorithmen & Komplexität Tag 4: Dynamische Datenstrukturen,

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 Bäume: Grundlagen und natürliche Suchbäume) Prof. Dr. Susanne Albers Bäume (1) Bäume sind verallgemeinerte Listen (jedes Knoten-Element kann mehr

Mehr

ALP II Dynamische Datenmengen Datenabstraktion

ALP II Dynamische Datenmengen Datenabstraktion ALP II Dynamische Datenmengen Datenabstraktion O1 O2 O3 O4 SS 2012 Prof Dr Margarita Esponda M Esponda-Argüero 1 Dynamische Datenmengen Dynamische Datenmengen können durch verschiedene Datenstrukturen

Mehr

Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik

Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik 5. Datenstrukturen Motivation Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik Eine Datenstruktur speichert gegebene Daten und stellt auf diesen bestimmte Operationen

Mehr

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält

Mehr

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss. (a, b)-bäume / 1. Szenario: Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss. Konsequenz: Kommunikation zwischen Hauptspeicher und Festplatte - geschieht nicht Byte für Byte,

Mehr

Algorithmen & Datenstrukturen

Algorithmen & Datenstrukturen Algorithmen & Datenstrukturen 1. Grundlagen 1.1 Elementare Datenstrukturen 1 Datenstrukturen Gleichartige Daten (ob vom elementaren Datentyp oder strukturiert) werden meist bei abschätzbarer Datenmenge

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Überblick Weitere Sortierverfahren Merge Sort Heap Sort Praktische Auswirkungen der Laufzeitabschätzungen

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Kürzeste Wege, Heaps, Hashing Heute: Kürzeste Wege: Dijkstra Heaps: Binäre Min-Heaps Hashing:

Mehr

Abstrakte Datentypen und deren Implementierung in Python

Abstrakte Datentypen und deren Implementierung in Python Kapitel 15: Abstrakte Datentypen und deren Implementierung in Python Einführung in die Informatik Wintersemester 007/08 Prof. Bernhard Jung Übersicht Abstrakte Datentypen ADT Stack Python-Implementierung(en)

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Lernziele Die Definition wichtiger Begriffe im Zusammenhand mit Bäumen zu kennen. Markierte Bäumen, insbesondere Suchbäume,

Mehr

Wiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute

Wiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute Wiederholung: Zusammenfassung Felder Algorithmen und Datenstrukturen (für ET/IT) Wintersemester / Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Ein Feld A kann repräsentiert

Mehr

Datenstrukturen und Algorithmen. Vorlesung 8

Datenstrukturen und Algorithmen. Vorlesung 8 Datenstrukturen und Algorithmen Vorlesung 8 Inhaltsverzeichnis Vorige Woche: ADT Stack ADT Queue Heute betrachten wir: ADT Deque ADT Prioritätsschlange Binomial-Heap Schriftliche Prüfung Informationen

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Kapitel 3: Elementare Datenstrukturen Mariano Zelke Datenstrukturen 2/18 Einfach verkettete Listen Mariano Zelke Datenstrukturen 3/18 Eine Zeiger-Implementierung

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 7 (21.5.2014) Binäre Suche, Hashtabellen I Algorithmen und Komplexität Abstrakte Datentypen : Dictionary Dictionary: (auch: Maps, assoziative

Mehr

Algorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier

Algorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier Algorithmen und Datenstrukturen SoSe 2008 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Algorithmen und Datenstrukturen Gesamtübersicht Organisatorisches / Einführung Grundlagen: RAM,

Mehr

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 Robert Elsässer Paderborn, den 15. Mai 2008 u.v.a. Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 AUFGABE 1 (6 Punkte): Nehmen wir an, Anfang bezeichne in einer normalen

Mehr

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2)

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 49 Einfach verkettete Listen O1 O2 O3 50 Einführung Einfach verkettete Listen sind die einfachsten

Mehr

Präsenzübung Datenstrukturen und Algorithmen SS 2014

Präsenzübung Datenstrukturen und Algorithmen SS 2014 Prof. aa Dr. E. Ábrahám F. Corzilius, S. Schupp, T. Ströder Präsenzübung Datenstrukturen und Algorithmen SS 2014 Vorname: Nachname: Studiengang (bitte genau einen markieren): Informatik Bachelor Informatik

Mehr

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda Bäume O1 O2 Text O3 O4 O5 O6 O7 Prof. Dr. Margarita Esponda SS 2012 22. ALP2-Vorlesung, M. Esponda Inhalt 1. Einführung 2. Warum Bäume? 3. Listen und Arrays vs. Bäume 4. Einfach verkettete binäre Suchbäume

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 15b (13.06.2018) Graphenalgorithmen IV Algorithmen und Komplexität Prims MST-Algorithmus A = while A ist kein Spannbaum do e = u, v ist

Mehr

Motivation Binäre Suchbäume

Motivation Binäre Suchbäume Kap..: Binäre Suchbäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS Fakultät für Informatik, TU Dortmund Zusätzliche Lernraumbetreuung Morteza Monemizadeh: Jeden Montag von :00 Uhr-:00 Uhr in

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Tutoraufgabe 1 (Implementierung eines ADTs):

Tutoraufgabe 1 (Implementierung eines ADTs): Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Übungsblatt (Abgabe.05.0) F. Corzilius, S. Schupp, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je bis Studierenden

Mehr

Anwendungsbeispiel MinHeap

Anwendungsbeispiel MinHeap Anwendungsbeispiel MinHeap Uns seien n ganze Zahlen gegeben und wir möchten darin die k größten Zahlen bestimmen; zudem gelten, dass n deutlich größer als k ist Wir können das Problem mit Laufzeit in O(n

Mehr

18. Natürliche Suchbäume

18. Natürliche Suchbäume Wörterbuchimplementationen 1. Natürliche Suchbäume [Ottman/Widmayer, Kap..1, Cormen et al, Kap. 12.1-12.] Hashing: Implementierung von Wörterbüchern mit erwartet sehr schnellen Zugriffszeiten. Nachteile

Mehr

Bäume 1. Thomas Röfer

Bäume 1. Thomas Röfer Bäume Thomas Röfer Preisverleihung Begriffsdefinitionen Eigenschaften Implementierung von Bäumen Durchlaufen von Bäumen Breitensuche/Tiefensuche Huffman-Kodierung Rückblick Sortieren Permutieren nach Dijkstra

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Sortierte Listen 2. Stacks & Queues 3. Teile und Herrsche Nächste Woche: Vorrechnen (first-come-first-served)

Mehr

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen Algorithmen und Datenstrukturen 2 Dynamische Datenstrukturen Algorithmen für dynamische Datenstrukturen Zugriff auf Variable und Felder durch einen Ausdruck: Namen durch feste Adressen referenziert Anzahl

Mehr

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2 Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Präsenzübung.05.0 F. Corzilius, S. Schupp, T. Ströder Aufgabe (Asymptotische Komplexität): (6 + 0 + 6 = Punkte) a) Geben Sie eine formale

Mehr

Organisatorisches. Algorithmen und Datenstrukturen (für ET/IT) Programm heute. Definition Feld. Definition Feld

Organisatorisches. Algorithmen und Datenstrukturen (für ET/IT) Programm heute. Definition Feld. Definition Feld Organisatorisches Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 208 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München TUMonline-Einträge: Vorlesung https://campus.tum.de/tumonline/wblv.

Mehr

Abstrakte Datentypen und Datenstrukturen

Abstrakte Datentypen und Datenstrukturen Abstrakte Datentypen und Datenstrukturen Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 3. VO DAP2 SS 2008 15. April 2008 1 Überblick ADT Sequence ADT Stack

Mehr

Binäre Suchbäume. Organisatorisches. VL-10: Binäre Suchbäume. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger.

Binäre Suchbäume. Organisatorisches. VL-10: Binäre Suchbäume. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger. Organisatorisches VL-10: inäre Suchbäume (Datenstrukturen und lgorithmen, SS 17) Gerhard Woeginger Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Sprechstunde: Mittwoch 11: 12:00 Übungen: Tim Hartmann,

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2016/17 13. Vorlesung Binäre Suchbäume Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Dynamische Menge verwaltet Elemente einer sich ändernden Menge

Mehr

18. Natürliche Suchbäume

18. Natürliche Suchbäume Bäume Bäume sind. Natürliche Suchbäume [Ottman/Widmayer, Kap..1, Cormen et al, Kap. 12.1-12.] Verallgemeinerte Listen: Knoten können mehrere Nachfolger haben Spezielle Graphen: Graphen bestehen aus Knoten

Mehr

Stacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012

Stacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012 , Queues & Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 19. September 2012 ODE/FHTBM, Queues & 19. September 2012 1/42 Datenstrukturen Elementare Datenstrukturen

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2016 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen

Mehr

ContainerDatenstrukturen. Große Übung 4

ContainerDatenstrukturen. Große Übung 4 ContainerDatenstrukturen Große Übung 4 Aufgabenstellung Verwalte Kollektion S von n Objekten Grundaufgaben: Iterieren/Auflistung Suche nach Objekt x mit Wert/Schlüssel k Füge ein Objekt x hinzu Entferne

Mehr

5.5 Prioritätswarteschlangen

5.5 Prioritätswarteschlangen 5.5 Prioritätswarteschlangen LIFO- und FIFO-Warteschlangen entfernen Werte aus der Warteschlange in Abhängigkeit davon, wann sie in diese eingefügt wurden Prioritätswartschlangen interpretieren die Werte

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 6 (14.5.2014) Abstrakte Datentypen, Einfache Datenstrukturen Algorithmen und Komplexität Abstrakte Datentypen : Beispiele Dictionary: (auch:

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Datenstruktur Liste Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 42 Formale Definition

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 216 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda Vorstellung des 6. Übungsblatts. Hashing Binäre Suchbäume AVL-Bäume 2 Aufgabe: Hashing mit

Mehr

Keller, Schlangen und Listen. Elementare Datenstrukturen Keller, Schlangen und Listen 1 / 14

Keller, Schlangen und Listen. Elementare Datenstrukturen Keller, Schlangen und Listen 1 / 14 Keller, Schlangen und Listen Elementare Datenstrukturen Keller, Schlangen und Listen 1 / 14 Listen Listen unterstützen die Operationen Lookup, Insert, Remove. + Listen passen sich der Größe der zu speichernden

Mehr

Bäume. Listen und Bäume, Graphen und Bäume, elementare Eigenschaften von Binärbäumen, Implementierung, Generische Baumdurchläufe

Bäume. Listen und Bäume, Graphen und Bäume, elementare Eigenschaften von Binärbäumen, Implementierung, Generische Baumdurchläufe Bäume Listen und Bäume, Graphen und Bäume, elementare Eigenschaften von Binärbäumen, Implementierung, Generische Baumdurchläufe Bäume (trees) können als eine Verallgemeinerung von Listen angesehen werden

Mehr

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18 EINI LogWing/ Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 17/18 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) Wintersemester 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen B4. Priority Queues und Heaps Marcel Lüthi and Gabriele Röger Universität Basel 28. März 2018 Einführung Kollektion von Elementen Grundlegende Operationen sind Einfügen

Mehr

Bäume und der Sequence ADT

Bäume und der Sequence ADT Bäume und der Sequence ADT Motivation: Der Sequence ADT Bei der Vorstellung verschiedener Implementierungen für Stacks, Queues und Deques wurde vor allem auf die Unterschiede zwischen Arrays fester Größe,

Mehr

Lineare Liste. struct list_element { float f; /* weitere Elemente */ struct list_element *next; /* Zeiger auf Nachfolger-Element */ }; Peter Sobe

Lineare Liste. struct list_element { float f; /* weitere Elemente */ struct list_element *next; /* Zeiger auf Nachfolger-Element */ }; Peter Sobe Lineare Liste Zeigertechnik zum dynamischen Herstellen und Lösen von Verbindungen zwischen Datenelementen Einsatz des Verbundtyps struct {...} in Kombination mit Zeigern. Da das Element selbst eine Struktur

Mehr

13. Bäume: effektives Suchen und Sortieren

13. Bäume: effektives Suchen und Sortieren 13. Bäume: effektives Suchen und Sortieren Java-Beispiele: Baum.java Traverse.java TraverseTest.java Version: 25. Jan. 2016 Schwerpunkte Aufgabe und Vorteile von Bäumen Sortieren mit Bäumen Ausgabealgorithmen:

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2018 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Organisatorisches: Keine Vorlesung nächste Woche wegen

Mehr