Datenstrukturen und Algorithmen
|
|
- Carin Geisler
- vor 5 Jahren
- Abrufe
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 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/
MehrElementare 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:
MehrDatenstrukturen 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 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
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
MehrInformatik 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
MehrInformatik 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:
MehrAlgorithmen 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
MehrAlgorithmen 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
MehrSortieren 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
MehrInformatik 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
Mehr11. 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
MehrInformatik 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
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
MehrTeil 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
MehrEinfü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
MehrAlgorithmen 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
MehrDSAL - 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,
MehrVorlesung 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
MehrInformatik 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
MehrAlgorithmen 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
MehrNatü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
MehrAlgorithmen 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
MehrEinfü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
Mehr16. 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
Mehr12. Dynamische Datenstrukturen
Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Implementationsvarianten der verketteten Liste 0 04 Motivation: Stapel ( push, pop, top, empty
Mehr5.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
MehrKapitel 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
MehrAbstrakter 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
MehrEinfü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,
MehrProgramm 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
MehrTutoraufgabe 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
MehrInformatik 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 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 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 Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. (Sortierte) Listen 2. Stacks & Queues 3. Datenstrukturen 4. Rekursion und vollständige Induktion
Mehr13. 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
MehrBä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.
MehrKapitel 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
MehrDatenstrukturen. 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
MehrInformatik 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,
MehrVorlesung 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
MehrALP 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
MehrDatenstrukturen 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
MehrCounting - 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. 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,
MehrAlgorithmen & 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
MehrSoftware 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 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:
MehrAbstrakte 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)
MehrSoftware 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,
MehrWiederholung: 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
MehrDatenstrukturen 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
MehrDatenstrukturen. 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
MehrInformatik 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
MehrAlgorithmen 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,
MehrBeispiellö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
MehrALP 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
MehrPrä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
MehrBä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
MehrInformatik 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
MehrMotivation 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
MehrGrundlagen 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.
MehrTutoraufgabe 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
MehrAnwendungsbeispiel 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
Mehr18. 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
MehrBä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 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)
MehrAlgorithmen 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
Mehrf 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
MehrOrganisatorisches. 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.
MehrAbstrakte 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
MehrBinä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,
MehrAlgorithmen 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
Mehr18. 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
MehrStacks, 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
MehrAlgorithmen 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
MehrContainerDatenstrukturen. 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
Mehr5.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
MehrInformatik 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:
MehrSoftware 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 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
MehrKeller, 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
MehrBä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
MehrEINI 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
MehrEinfü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
MehrAlgorithmen 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
MehrBä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,
MehrLineare 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
Mehr13. 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:
MehrAlgorithmen 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