3 Dynamische Datenstrukturen

Größe: px
Ab Seite anzeigen:

Download "3 Dynamische Datenstrukturen"

Transkript

1 3 Dynamische Datenstrukturen Beispiele für dynamische Datenstrukturen sind Lineare Listen Schlangen Stapel Bäume Prof. Dr. Dietmar Seipel 128

2 Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/ Lineare Listen Eine Folge Liste von Knoten von folgendem Typ: kann implementiert werden als eine lineare public class Node { Node int key; Node next; Node(int k) { key = k; next = null; Prof. Dr. Dietmar Seipel 129

3 Diese Klassendefinition zeigt an, dass ein Knoten aus zwei Komponenten besteht: die key Komponente ist eine ganze Zahl die next Komponente ist ein Verweis auf einen (anderen) Knoten. Veranschaulichung L: a 1 a 2... a n head Prof. Dr. Dietmar Seipel 130

4 Bereitstellen von Speicherplatz für ein Listenelement durch die Konstruktorfunktion : Node x = new Node(v); Die Konstruktorfunktion liefert als Resultat einen Verweis auf einen freien Speicherplatz für ein Listenelement. Prof. Dr. Dietmar Seipel 131

5 Implementierung für lineare Listen: Kopfzeiger head Anzahl count der gespeicherten Elemente Die leere Liste ist gegeben durch den Verweis head = null und count = 0. Sie wird durch folgende Konstruktorfunktion erzeugt: List() { head = null; count = 0; Konstruktorfunktion Prof. Dr. Dietmar Seipel 132

6 Zum Einfügen eines neuen Elements v hinter dem Knoten t einer linearen Liste verwenden wir die Funktion insert. t a i a i+1 x v Zum Entfernen eines Knotens t aus einer linearen Liste verwenden wir die Funktion remove. x a t i-1 a t i a i+1 Prof. Dr. Dietmar Seipel 133

7 Falls t nicht der Kopf der Liste ist, so bestimmen wir den Vorgängerknoten x von t und setzen dessen Verweis auf den Nachfolgerknoten t von t. Zum Verketten zweier linearer Listen L1 und L2 gegeben durch head1, count1 und head2, count2 verwenden wird die Funktion concat. Um das Entfernen von Listenelementen bei gegebener Position möglichst einfach ausführen zu können, kann man zu jedem Listenelement nicht nur einen Verweis next auf das nächstfolgende, sondern auch einen Verweis prior auf das vorhergehende Listenelement abspeichern. ( doppelt verkette Speicherung) Prof. Dr. Dietmar Seipel 134

8 public class DoubleNode { Double Node int key; DoubleNode next, prior; DoubleNode(int k) { key = k; next = prior = null; prior next Prof. Dr. Dietmar Seipel 135

9 Bei doppelt verketteter Speicherung können das Entfernen und das Verketten einfacher realisiert werden. Wir haben die nach dem Entfernen nicht mehr benötigten Knoten nicht zur neuen und eventuell anderen Verwendung explizit freigegeben, sondern sie nur aus der Liste durch Umlegen von Verweisen entfernt. Man muss in C diese Knoten explizit freigeben. In JAVA werden Elemente, auf die keine Verweise mehr existieren vom Garbage Kollektor automatisch aus dem Speicher entfernt. Prof. Dr. Dietmar Seipel 136

10 Node /** Ein Listen- bzw. Stackelement. */ public class Node { /** Schluesselwert */ int key; /** Das naechste Element */ Node next; /** * Ein einfachern Konstruktor mit Schluessel. */ Node(int k) { key = k; next = null; Prof. Dr. Dietmar Seipel 137

11 Node /** * Liefert eine Textausgabe des Objektes, siehe * {@link java.lang.object#tostring */ public String tostring() { return "[" + key + "]"; Prof. Dr. Dietmar Seipel 138

12 /** Ein Listenelement */ public class DoubleNode { Double Node /** Schluesselwert */ int key; /** Das naechste Element */ DoubleNode next; /** Das vorhergehende Element */ DoubleNode prior; Prof. Dr. Dietmar Seipel 139

13 Double Node /** * Ein einfacher Konstruktor mit Schluessel. */ DoubleNode(int k) { key = k; next = prior = null; Prof. Dr. Dietmar Seipel 140

14 Lineare Liste /** Eine einfach verkettete lineare Liste. */ public class List { /** Das erste Element der Liste */ Node head; /** Die Anzahl der gespeicherten Elemente */ int count; /** * Konstruktor fuer eine leere Liste */ List() { head = null; count = 0; Prof. Dr. Dietmar Seipel 141

15 Lineare Liste /** * Fuegt einen neuen Knoten mit Schluessel v * nach dem Knoten t in die Liste ein. */ void insert(int v, Node t) { Node x = new Node(v); count++; if (t == null) { //Einfuegen am Anfang x.next = head; head = x; else { x.next = t.next; t.next = x; Prof. Dr. Dietmar Seipel 142

16 Lineare Liste /** * Haengt einen neuen Knoten mit Schluessel v an das * Ende der Liste an (unter Benutzung von insert). */ void add(int v) { Node last = head; if (last == null) { insert(v, null); else { //Letztes Listenelement suchen while (last.next!= null) last = last.next; insert(v, last); Prof. Dr. Dietmar Seipel 143

17 Lineare Liste /** * Loescht den Knoten aus der Liste. */ void remove(node t) { count--; if (t == head) { head = t.next; else { Node x = head; while (x.next!= t) x = x.next; x.next = t.next; Prof. Dr. Dietmar Seipel 144

18 Lineare Liste /** * Haengt die Listen von head1 und head2 aneinander * und speichert sie in dieser Liste. */ void concat (Node head1, int count1, Node head2, int count2) { count = count1 + count2; if (head1 == null) { head = head2; else { head = head1; Node x = head1; while (x.next!= null) x = x.next; x.next = head2; Prof. Dr. Dietmar Seipel 145

19 Lineare Liste /** Liefert eine Textausgabe des Objektes */ public String tostring() { String s = getclass().getname() + "[count=" + count + ",{"; for (Node i = head; i!= null; i = i.next) { s += i.tostring() + "->"; s += "null]"; return s; Prof. Dr. Dietmar Seipel 146

20 Lineare Liste /** Kleines Testprogramm. */ public static void main(string[] args) { List l = new List(); for (int i = 0; i < args.length; i++) { l.add(integer.parseint(args[i])); System.out.println(l); Prof. Dr. Dietmar Seipel 147

21 Doppelt verkettete lineare Liste /** Eine doppelt verkettete lineare Liste.*/ public class DoubleList { /** Das erste Element der Liste */ DoubleNode head; /** Die Anzahl der gespeicherten Elemente */ int count; /** Konstruktor fuer eine leere Liste */ DoubleList() { head = null; count = 0; Prof. Dr. Dietmar Seipel 148

22 Doppelt verkettete lineare Liste void insert(int v, DoubleNode t) { DoubleNode x = new DoubleNode(v); count++; if (t == null) { //Einfuegen am Anfang x.next = head; x.prior = null; head.prior = x; head = x; else { x.next = t.next; x.prior = t; t.next = x; x.next.prior = x; Prof. Dr. Dietmar Seipel 149

23 Doppelt verkettete lineare Liste void remove (DoubleNode t) { count--; if (t.prior!= null) t.prior.next = t.next; if (t.next!= null) t.next.prior = t.prior; if (t == head) head = t.next; Prof. Dr. Dietmar Seipel 150

24 3.2 Schlangen Eine Schlange (engl.: queue) ist eine lineare Liste, bei der das Einfügen und Entfernen von Listenelementen auf die beiden extremalen Listenelemente (d.h. Listenanfang und Listenende) beschränkt ist. Prof. Dr. Dietmar Seipel 151

25 Bezeichnungen pushhead(v), pushtail(v): fügt das Element v am Anfang bzw. am Ende der Schlange ein. pophead(), poptail(): entfernt das erste bzw. letzte Element der Schlange und gibt seinen Wert als Resultat zurück; undefiniert, falls die Schlange leer ist. v = top(): gibt das erste Element der Schlange als Resultat zurück; ebenfalls undefiniert, falls die Schlange leer ist. empty(): testet ob die Schlange leer ist. init(): erzeugt eine Leere Schlange Prof. Dr. Dietmar Seipel 152

26 3.3 Stapel Ein Stapel (oder Keller; engl.: stack) ist eine lineare Liste, bei der das Einfügen und Entfernen eines Elements auf den Listenkopf beschränkt ist. Realisierung mit verketteten Listen top a 1 a 2... a n null head top Prof. Dr. Dietmar Seipel 153

27 Implementierung Stack /** * Stack-Klasse */ public class Stack { /** Oberster Knoten des Stacks */ Node top; /** * Konstruktor. Initialisiert den Stack (leer). */ Stack() { top = null; Prof. Dr. Dietmar Seipel 154

28 Stack /** * Legt ein neues Element auf den Stack */ void push(int v) { Node t = new Node(v); t.next = top; top = t; /** * Liefert das oberste Element des Stacks */ int top() { return top.key; Prof. Dr. Dietmar Seipel 155

29 Stack /** * Liefert das oberste Element des Stacks und * loescht dieses vom Stack */ int pop() { int v = top.key; top = top.next; return v; /** * Liefert true, falls der Stack leer ist. */ boolean empty() { return (top == null); Prof. Dr. Dietmar Seipel 156

30 Stack /** * Liefert eine Textausgabe des Objektes, siehe * {@link java.lang.object#tostring */ public String tostring() { String s = getclass().getname() + "["; for (Node i = top; i!= null; i = i.next) { s += i.tostring() + "<-"; s += "null]"; return s; Prof. Dr. Dietmar Seipel 157

31 Stack /** * Kleines Testprogramm. */ public static void main (String[] args) { Stack s = new Stack(); for (int i = 0; i < args.length; i++) { s.push(integer.parseint(args[i])); System.out.println(s); Prof. Dr. Dietmar Seipel 158

32 Anwendung Speicherung der Rücksprungadressen bei geschachtelten Unterprogrammaufrufen. Hauptprogramm Unterprogramm 1 (2) push (A2) (1) push (A1) A2 Unterprogramm 2 A1 (3) A2 = pop (4) push (A3) Unterprogramm 3 (6) A1 = pop A3 (5) A3 = pop Prof. Dr. Dietmar Seipel 159

33 Beim Sprung zum Unterprogramm wird die aktuelle Adresse A auf den Stapel gelegt ( push(a) ). Beim Rücksprung wird die ehemals aktuelle Adresse des aufrufenden Programms vom Stapel geholt ( A = pop() ). Wir erhalten folgende Folge von Stapelzuständen: A2 A3 A1 A1 A1 A1 A1 (0) (1) (2) (3) (4) (5) (6) Prof. Dr. Dietmar Seipel 160

34 3.4 Geordnete binäre Wurzelbäume Der Wurzelbaum Beispiel 4 Knoten: 4 Kante: (4,5) (5 ist Nachfolger von 4) Prof. Dr. Dietmar Seipel 161

35 Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/07 Ein Wurzelbaum besteht aus einer Menge von Knoten, und einer Menge von Kanten,, so dass es einen eindeutigen Knoten, genannt Wurzel gibt, von dem alle Knoten über jeweils eindeutige Wege erreichbar sind. Ein Weg von ist dabei eine Folge so dass für je zwei aufeinanderfolgende Knoten existiert. (Merke: nach aufgefasst werden!) nach kann als Weg von und von Knoten, eine Kante Prof. Dr. Dietmar Seipel 162

36 Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/07 Für einen Knoten bezeichnet die Menge der Vorgänger bzw. der Nachfolger von in. Offensichtlich gilt in einem Wurzelbaum: falls falls nicht die Wurzel ist, die Wurzel ist. Ein Wurzelbaum heißt binär, falls jeder Knoten höchstens zwei Nachfolger hat: Prof. Dr. Dietmar Seipel 163

37 Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/07 Ein binärer Wurzelbaum heißt geordnet, falls für jeden Knoten injektive Abbildung eine auf seiner Nachfolgermenge gegeben ist. mit heißt linker Sohn, von v. mit heißt rechter Sohn v v v Prof. Dr. Dietmar Seipel 164

38 3.4.2 Baumdarstellung mittels einer Zeigerstuktur Ein Baum kann also durch die Angabe eines Zeigers root auf den Wurzelknoten angegeben werden. Die Zeiger lson bzw. rson werden in einem Knoten auf null gesetzt, wenn die entsprechenden Söhne nicht existieren. Für die Klasse BinTree wird ein Stack benötigt, der BinTreeNodes oder allgemein Objects speichern kann (im Gegensatz zu dem oben erstellten Stack für ints.) Falls eine Stack-Implementierung mit Objects gewählt wird, muss in der Methode wlr_durchlauf die Zeile t = s.pop() durch t = (BinTreeNode) s.pop() ersetzt werden. Prof. Dr. Dietmar Seipel 165

39 Implementierung BinTreeNode /** * Knoten eines binaeren Baumes */ public class BinTreeNode { /** Schluesselwert */ int key; /** Linker Sohnknoten */ BinTreeNode lson; /** Rechter Sohnknoten */ BinTreeNode rson; Prof. Dr. Dietmar Seipel 166

40 /** * Konstruktor. */ BinTreeNode(int v) { key = v; lson = rson = null; BinTreeNode Prof. Dr. Dietmar Seipel 167

41 BinTreeNode /** * Gibt die Anzahl der Soehne des Knotens * zurueck (0, 1 oder 2) */ int countsons() { if (lson == null) return (rson == null)?0:1; else return (rson == null)?1:2; Prof. Dr. Dietmar Seipel 168

42 BinTreeNode /** * Liefert true, falls der Knoten ein * Blatt ist, d.h. keine Kinder hat */ boolean isleaf() { return (lson == null) && (rson == null); Prof. Dr. Dietmar Seipel 169

43 BinTreeNode /** * Liefert true, falls der Knoten keinen * Sohn auf der Seite hat, in der der Schluessel * s zu suchen waere */ boolean isleaf(int s) { return ( (key > s) && (lson == null) ) ( (key < s) && (rson == null) ); Prof. Dr. Dietmar Seipel 170

44 BinTreeNode /** * Liefert eine Textausgabe des Objektes, siehe * {@link java.lang.object#tostring */ public String tostring() { return "[" + key + "]"; Prof. Dr. Dietmar Seipel 171

45 /** * Binaerer Baum */ public class BinTree { BinTree /** * Baumdurchlauf in LWR-Ordnung */ void lwr_durchlauf(bintreenode t) { if (t!= null) { lwr_durchlauf(t.lson); System.out.println(t); lwr_durchlauf(t.rson); Prof. Dr. Dietmar Seipel 172

46 BinTree /** * Generische Methode zum Baumdurchlauf entsprechend * String id (von der Form "LWR", "WLR" oder "LRW") */ void durchlauf(string id, BinTreeNode t) { if (t!= null) { for (int i = 0; i < id.length(); i++) { switch (id.charat(i)) { case L : durchlauf(id, t.lson);break; case R : durchlauf(id, t.rson);break; case W : System.out.println(t);break; Prof. Dr. Dietmar Seipel 173

47 BinTree /** * Nicht-rekursiver Baumdurchlauf in WLR-Ordnung */ void wlr_durchlauf(bintreenode t) { Stack s = new Stack(); while (t!= null) { System.out.println(t); if (t.rson!= null) s.push(t.rson); Prof. Dr. Dietmar Seipel 174

48 BinTree if (t.lson!= null) { t = t.lson; else { if (!s.empty()) t = s.pop(); else t = null; Prof. Dr. Dietmar Seipel 175

49 Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/ Ordnungen und Durchlaufprizipien 1. Inordnungen LWR, RWL Beim Durchlaufen der Knoten in LWR- bzw. RWL-Ordnung wird zunächst der linke bzw. rechte Teilbaum, dann die Wurzel, und dann der rechte, bzw. linke Teilbaum durchlaufen. Im Beispiel erhalten wir: LWR RWL Prof. Dr. Dietmar Seipel 176

50 Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/07 Die Ordnungen LWR und RWL sind stets invers zueinander, d.h. ist LWR, so ist RWL Prof. Dr. Dietmar Seipel 177

51 Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/07 2. Randordnungen (a) Präordnungen WLR, WRL Hier wird die Wurzel vor den beiden Teilbäumen durchlaufen. im Beispiel: WLR WRL Prof. Dr. Dietmar Seipel 178

52 Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/07 (b) Postordnungen LRW, RLW Hier werden die beiden Teilbäume vor der Wurzel durchlaufen. im Beispiel: LRW RLW Offenbar sind WLR und RLW bzw. WRL und LRW jeweils zueinander invers. Prof. Dr. Dietmar Seipel 179

53 Lemma (Durchlaufordnungen) (i) Ein geordneter binärer Wurzelbaum ist eindeutig bestimmt durch die Angabe einer Inordnung zusammen mit einer Randordnung. z.b. durch LWR und WLR oder durch LWR und LRW. (ii) Die Angabe zweier Inordnungen bzw. zweier Randordnungen reicht für die eindeutige Charakterisierung eines geordneten Wurzelbaumes i.a. nicht aus. z.b. reichen LWR und RWL nicht aus, und ebenso reichen WLR und LRW nicht aus. Prof. Dr. Dietmar Seipel 180

54 Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/07 Beweis Wegen der Äquivalenz von LWR und RWL bzw. von WLR und RLW reicht es aus, den Fall zu betrachten, dass die Inordnung LWR ist und die Randordnung WLR. Wir zeigen die Behauptung durch vollständige Induktion über die Eckenzahl des Baums. Induktionsanfang, : trivial Induktionsschluss, : Sei die Behauptung für alle eckigen Bäume mit gezeigt. Wir betrachten nun einen eckigen Baum bereits. Die Wurzel von ist offenbar das erste Element in der WLR Ordnung. Prof. Dr. Dietmar Seipel 181

55 Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/07 Für die beiden Teilbäume der Wurzel welche eventuell auch leer sein können kann nun wie folgt die LWR Ordnung und die WLR Ordnung aus den Ordnungen des gesamten Baumes eindeutig bestimmt werden: a) Die LWR Folge kann mittels von ist. zerlegt werden in, so dass bzw. die LWR Folge für den linken bzw. den rechten Teilbaum b) Da man jetzt weiß, welche Elemente im linken bzw. rechten Teilbaum von liegen, kann man nun auch die WLR Folge zerlegen in, so dass rechten Teilbaum von ist. bzw. die WLR Folge für den linken bzw. Dann können wir die Induktionsannahme auf die beiden Teilbäume von bzw. deren Folgen beiden Teilbäume haben jeweils maximal Knoten). Also kann der gesamte Baum eindeutig rekonstruiert werden. und bzw. und anwenden (denn die Prof. Dr. Dietmar Seipel 182

56 die Wurzel des linken Teilbaumes. Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/07 Beispiel zu (i) LWR WLR Also ist die Wurzel. LWR: WLR: Also ist Prof. Dr. Dietmar Seipel 183

57 Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/07 Folgende Bäume haben sowohl die gleiche WLR als auch die gleiche LRW Ordnung: T 1 : T 1 2 : WLR LRW Prof. Dr. Dietmar Seipel 184

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 - ! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck

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

Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/07

Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/07 5 Bäume 5.1 Suchbäume Sei Ì Î µ ein geordneter binärer Wurzelbaum. Sei Î Ë eine Abbildung der Knotenmenge Î in eine vollständig geordnete Schlüsselwertmenge Ë. Ì heißt (schwach) sortiert, g.d.w. gilt:

Mehr

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen

Mehr

Aufgaben NF 11; Seite 1

Aufgaben NF 11; Seite 1 Aufgabe Ref 1: Gegeben ist die Klasse Schueler public class Schueler { private String name, vorname, kurs; // Konstruktor public Schueler(String n, String vn, String k) { name=n; vorname=vn; kurs=k; public

Mehr

ADT: Verkettete Listen

ADT: Verkettete Listen ADT: Verkettete Listen Abstrakter typ - Definition public class Bruch int zaehler, nenner; public Bruch(int zaehler, int nenner) this.zaehler = zaehler; this.nenner = nenner; Konstruktor zum Initialisieren

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

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1 Kapitel 14 Bäume Bäume 1 Ziele Den Begriff des Baums in der Informatik kennenlernen Bäume als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf Bäumen verstehen und schreiben können

Mehr

Kapitel 4: Datentyp Keller und Schlange

Kapitel 4: Datentyp Keller und Schlange Kapitel 4: Datentyp Keller und Schlange Keller (Stack) Schlange (Queue) 4-1 Definition Keller und seine Operationen Ein Keller (engl. Stack; Stapel) ist eine endliche Menge von Elementen mit einer LIFO-Organisation

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

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

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

1 Abstrakte Datentypen

1 Abstrakte Datentypen 1 Abstrakte Datentypen Spezifiziere nur die Operationen! Verberge Details der Datenstruktur; der Implementierung der Operationen. == Information Hiding 1 Sinn: Verhindern illegaler Zugriffe auf die Datenstruktur;

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 7. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@informatik.uni-leipzig.de aufbauend auf den Kursen der letzten Jahre von E. Rahm, G. Heyer,

Mehr

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume. Universität Osnabrück 1 Bäume 3 - Objektorientierte Programmierung in Java Vorlesung 10: Collections 4 Einführung Bäume sind verallgemeinerte Listenstrukturen Lineare Liste Jedes Element hat höchstens

Mehr

13. Bäume: effektives Suchen und Sortieren

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

Mehr

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen Bäume sind verallgemeinerte Listen Datenstrukturen Teil 2 Bäume Jeder Knoten kann mehrere Nachfolger haben Sie sind weiter spezielle Graphen Graphen bestehen aus Knoten und Kanten Kanten können gerichtet

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

8 Elementare Datenstrukturen

8 Elementare Datenstrukturen Algorithmen und Datenstrukturen 186 8 Elementare Datenstrukturen In diesem und dem folgenden Kapitel werden grundlegende Techniken der Darstellung und Manipulation dynamischer Mengen auf Computern vorgestellt.

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 15 Einstieg in die Informatik mit Java Collections Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick Collections 2 Hierarchie von Collections 3 Verwendung

Mehr

Geordnete Binärbäume

Geordnete Binärbäume Geordnete Binärbäume Prof. Dr. Martin Wirsing in Zusammenarbeit mit Gilbert Beyer und Christian Kroiß http://www.pst.ifi.lmu.de/lehre/wise-09-10/infoeinf/ WS 09/10 Einführung in die Informatik: Programmierung

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

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 17. Juli 2015 Hinweise: Klausurtermine: Programmieren II Übungsklausur Programmieren I: 7. September

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

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

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

Bäume und Priority Queues

Bäume und Priority Queues 14 Kapitel 2 Bäume und Priority Queues 2.1 Bäume Bisher haben wir als dynamische Datenstrukturen Listen kennengelernt. Da der Zugriff in Listen in der Regel nur sequentiell erfolgen kann, ergibt sich für

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume 1 Kapitel 13 Ziele 2 Den Begriff des Baums in der Informatik kennenlernen als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf n verstehen und schreiben können Verschiedene Möglichkeiten

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

Verkettete Datenstrukturen: Listen

Verkettete Datenstrukturen: Listen Verkettete Datenstrukturen: Listen 2 Listen Formal: Liste = endliche Folge von Elementen [a 1, a 2,..., a n ]. Spezialfall: leere Liste [ ]. Länge einer Liste = Anzahl der Elemente (bei leerer Liste: 0).

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

ADS: Algorithmen und Datenstrukturen

ADS: Algorithmen und Datenstrukturen ADS: Algorithmen und Datenstrukturen Teil VII Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University of Leipzig 08.

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (12 Hashverfahren: Verkettung der Überläufer) Prof. Dr. Susanne Albers Möglichkeiten der Kollisionsbehandlung Kollisionsbehandlung: Die Behandlung

Mehr

6. Verkettete Strukturen: Listen

6. Verkettete Strukturen: Listen 6. Verkettete Strukturen: Listen 5 K. Bothe, Inst. f ür Inf., HU Berlin, PI, WS 004/05, III.6 Verkettete Strukturen: Listen 53 Verkettete Listen : Aufgabe Vergleich: Arrays - verkettete Listen Listenarten

Mehr

Praxis der Programmierung

Praxis der Programmierung Dynamische Datentypen Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Dynamische Datentypen 2 Dynamische Datentypen

Mehr

Übung 4: Die generische Klasse AvlBaum in Java 1

Übung 4: Die generische Klasse AvlBaum in Java 1 Übung 4: Die generische Klasse AvlBaum in Java 1 Ein binärer Suchbaum hat die AVL -Eigenschaft, wenn sich in jedem Knoten sich die Höhen der beiden Teilbäume höchstens um 1 unterscheiden. Diese Last (

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Elementare Datenstrukturen Array Linked List Stack Queue Tree (Feld) (Verkettete Liste) (Stapel) (Warteschlange) (Baum) Einschub:

Mehr

class ListElement { int value; ListElement next; ListElement() { next=null; value=0;

class ListElement { int value; ListElement next; ListElement() { next=null; value=0; Listenimplementierung Übung 1, Aufgabe 4. c 2004 Evgeny Matusov, Thomas Deselaers Zunächst definieren wir die Basisklasse für die Listenelemente, die gleichzeitig einen Verweis auf weitere Listenelemente

Mehr

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 15 (Linearer Speicher, Listen, Bäume)

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 15 (Linearer Speicher, Listen, Bäume) Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 15 (Linearer Speicher, Listen,

Mehr

ALP II Dynamische Datenmengen

ALP II Dynamische Datenmengen ALP II Dynamische Datenmengen Teil III Iteratoren Iterator-Objekt O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 22. ALP2-Vorlesung, M. Esponda 2 Motivation: Iteratoren Wir haben für die Implementierung

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 10, Donnerstag 8.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 10, Donnerstag 8. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 10, Donnerstag 8. Januar 2015 (Verkettete Listen, Binäre Suchbäume) Junior-Prof. Dr.

Mehr

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren II Dr. Werner Struckmann 29. August 2014 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Suchbäume Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative

Mehr

Technische Universität München. Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter

Technische Universität München. Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter Kapitel 7 Fortgeschrittene Datenstrukturen Motivation: Lineare Liste: Suchen eines Elements ist schnell O(log n) Einfügen eines Elements ist langsam

Mehr

368 4 Algorithmen und Datenstrukturen

368 4 Algorithmen und Datenstrukturen Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

Institut für Programmierung und Reaktive Systeme 7. Juli Programmieren II. Übungsklausur

Institut für Programmierung und Reaktive Systeme 7. Juli Programmieren II. Übungsklausur Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 7. Juli 2017 Hinweise: Klausurtermine: Programmieren II Übungsklausur Programmieren I: 28. August

Mehr

Stapel (Stack, Keller)

Stapel (Stack, Keller) Stapel (Stack, Keller) Eine wichtige Datenstruktur ist der Stapel. Das Prinzip, dass das zuletzt eingefügte Element als erstes wieder entfernt werden muss, bezeichnet man als LIFO-Prinzip (last-in, first-out).

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

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1 Kapitel 13 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch

Mehr

Fortgeschrittene Programmiertechnik Klausur WS 2014/15 Angewandte Informatik Bachelor

Fortgeschrittene Programmiertechnik Klausur WS 2014/15 Angewandte Informatik Bachelor Fortgeschrittene Programmiertechnik Klausur WS 2014/15 Angewandte Informatik Bachelor Name Matrikelnummer Aufgabe Punkte Aufgabe Punkte Zwischensumme 1 6 2 8 3 16 4 14 5 12 56 6 16 7 18 8 20 9 10 Summe

Mehr

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte) Praktische Informatik (Software) Vorlesung Softwareentwicklung 1 Prof. Dr. A. Ferscha Hauptklausur am 01. 02. 2001 Zuname Vorname Matr. Nr. Stud. Kennz. Sitzplatz HS / / / Punkte Note korr. Fügen Sie fehlende

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für

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

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

C- Kurs 09 Dynamische Datenstrukturen

C- Kurs 09 Dynamische Datenstrukturen C- Kurs 09 Dynamische Datenstrukturen Dipl.- Inf. Jörn Hoffmann jhoffmann@informaak.uni- leipzig.de Universität Leipzig InsAtut für InformaAk Technische InformaAk Flexible Datenstrukturen Institut für

Mehr

Schnittstellen, Stack und Queue

Schnittstellen, Stack und Queue Schnittstellen, Stack und Queue Schnittstelle Stack Realisierungen des Stacks Anwendungen von Stacks Schnittstelle Queue Realisierungen der Queue Anwendungen von Queues Hinweise zum Üben Anmerkung: In

Mehr

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen Gliederung 5. Compiler 1. Struktur eines Compilers 2. Syntaxanalyse durch rekursiven Abstieg 3. Ausnahmebehandlung 4. Arrays und Strings 6. Sortieren und Suchen 1. Grundlegende Datenstrukturen 2. Bäume

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Elementare Datenstrukturen Rekursionen Bäume 2 1 Datenstruktur Baum Definition eines Baumes

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Übung 3: Die generische Klasse BinärerSuchbaum in Java 1 Datenelemente der Klasse BinaererSuchbaum Das einzige Datenelelement in dieser Klasse ist die Wurzel vom Typ BinaerBaumknoten. Die Klasse BinaerBaumknoten

Mehr

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen.

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Innere Klassen Innere Klassen Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Literatur: Java Tutorial & Arnold, K., Gosling, J. und Holmes,D... Page 1 Innere Klassen Der erste

Mehr

Bäume, Suchbäume und Hash-Tabellen

Bäume, Suchbäume und Hash-Tabellen Im folgenden Fokus auf Datenstrukturen, welche den assoziativen Zugriff (über einen bestimmten Wert als Suchkriterium) optimieren Bäume: Abbildung bzw. Vorberechnung von Entscheidungen während der Suche

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

Kapitel 3: Datentyp Liste

Kapitel 3: Datentyp Liste Kapitel 3: Datentyp Liste! Einleitung! Listen-Interface! Liste als Feld: ArrayList! Einfach verkettete Listen! Hilfskopfknotentechnik! Liste als einfach verkettete Liste: LinkedList! Doppelt verkettete

Mehr

Informatik II Vorlesung am D-BAUG der ETH Zürich

Informatik II Vorlesung am D-BAUG der ETH Zürich Informatik II Vorlesung am D-BAUG der ETH Zürich Vorlesung 9, 2.5.2016 [Nachtrag zu Vorlesung : Numerische Integration, Zusammenfassung Objektorientierte Programmierung] Dynamische Datenstrukturen II:

Mehr

Logische Datenstrukturen

Logische Datenstrukturen Lineare Listen Stapel, Warteschlangen Binärbäume Seite 1 Lineare Liste Begriffe first Funktion: sequentielle Verkettung von Datensätzen Ordnungsprinzip: Schlüssel Begriffe: first - Anker, Wurzel; Adresse

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 8. Vorlesung Martin Middendorf und Peter F. Stadler Universität Leipzig Institut für Informatik middendorf@informatik.uni-leipzig.de studla@bioinf.uni-leipzig.de Gefädelte

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Fachschaft Informatik Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Michael Steinhuber König-Karlmann-Gymnasium Altötting 15. Januar 2016 Folie 1/77 Inhaltsverzeichnis I 1 Datenstruktur Schlange

Mehr

Clausthal C G C C G C. Informatik II Bäume. G. Zachmann Clausthal University, Germany Beispiele.

Clausthal C G C C G C. Informatik II Bäume. G. Zachmann Clausthal University, Germany Beispiele. lausthal Informatik II Bäume. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Beispiele Stammbaum. Zachmann Informatik 2 - SS 06 Bäume 2 Stammbaum Parse tree, Rekursionsbaum Unix file hierarchy

Mehr

Fortgeschrittene Programmiertechnik Klausur SS 2015 Angewandte Informatik Bachelor

Fortgeschrittene Programmiertechnik Klausur SS 2015 Angewandte Informatik Bachelor Fortgeschrittene Programmiertechnik Klausur SS 2015 Angewandte Informatik Bachelor Name Matrikelnummer Aufgabe Punkte Aufgabe Punkte Zwischensumme 1 6 2 8 3 12 4 18 5 20 64 6 9 7 17 8 18 9 12 Summe 120

Mehr

Informatik I 2. Kapitel. Elementare Datenstrukturen. Datenstrukturen. Datenstrukturen. Rainer Schrader. 28. Mai 2008

Informatik I 2. Kapitel. Elementare Datenstrukturen. Datenstrukturen. Datenstrukturen. Rainer Schrader. 28. Mai 2008 Informatik I. Kapitel Rainer Schrader Elementare Zentrum für Angewandte Informatik Köln 8. Mai 008 / / bisher haben wir nur Arrays verwendet, Gliederung Einführung abstrakte Datentypen Listen Stacks und

Mehr

Einfache Datenstrukturen

Einfache Datenstrukturen Kapitel 2 Einfache Datenstrukturen Bis vor einigen Jahren hat es für das Telefonieren ausgereicht, neben dem Telefon ein Telefonbuch zur Hand zu haben. Das im wesentlichen auftretende Problem, daß man

Mehr

Graphdurchmusterung, Breiten- und Tiefensuche

Graphdurchmusterung, Breiten- und Tiefensuche Prof. Thomas Richter 18. Mai 2017 Institut für Analysis und Numerik Otto-von-Guericke-Universität Magdeburg thomas.richter@ovgu.de Material zur Vorlesung Algorithmische Mathematik II am 18.05.2017 Graphdurchmusterung,

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung Algorithmen und Datenstrukturen Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus wurden ausgewählte Teile in Abstimmung

Mehr

Programmiertechnik II Klausur WS 15/16 Angewandte Informatik Bachelor

Programmiertechnik II Klausur WS 15/16 Angewandte Informatik Bachelor Programmiertechnik II Klausur WS 15/16 Angewandte Informatik Bachelor Name Matrikelnummer Aufgabe Punkte Aufgabe Punkte Zwischensumme 1 6 2 10 3 12 4 12 5 14 54 6 12 7 20 8 17 9 17 Summe 120 Note Prof.

Mehr

Programmieren I. Kapitel 13. Listen

Programmieren I. Kapitel 13. Listen Programmieren I Kapitel 13. Listen Kapitel 13: Listen Ziel: eigene Datenstrukturen erstellen können und eine wichtige vordefinierte Datenstruktur( familie) kennenlernen zusammengehörige Elemente zusammenfassen

Mehr

7.0 Arbeiten mit Objekten und Klassen

7.0 Arbeiten mit Objekten und Klassen 252-0027 Einführung in die Programmierung I 7.0 Arbeiten mit Objekten und Klassen Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013. and Thomas Gross 2016 All rights reserved.

Mehr

3. Übungsblatt zu Algorithmen I im SoSe 2017

3. Übungsblatt zu Algorithmen I im SoSe 2017 Karlsruher Institut für Technologie Prof. Dr. Jörn Müller-Quade Institut für Theoretische Informatik Björn Kaidel, Sebastian Schlag, Sascha Witt 3. Übungsblatt zu Algorithmen I im SoSe 2017 http://crypto.iti.kit.edu/index.php?id=799

Mehr

3. Übungsbesprechung Programmkonstruktion

3. Übungsbesprechung Programmkonstruktion 3. Übungsbesprechung Programmkonstruktion Karl Gmeiner karl@complang.tuwien.ac.at November 16, 2011 K Gmeiner (karl@complang.tuwien.ac.at) 3. Übungsbesprechung PK November 16, 2011 1 / 22 Rückblick und

Mehr

16. Dezember 2004 Dr. M. Schneider, P. Ziewer

16. Dezember 2004 Dr. M. Schneider, P. Ziewer Technische Universität München WS 2004/2005 Fakultät für Informatik Lösungsvorschläge zu Blatt 8 A. Berlea, M. Petter, 16. Dezember 2004 Dr. M. Schneider, P. Ziewer Übungen zu Einführung in die Informatik

Mehr

Informatik Abitur Bayern 2017 / II - Lösung

Informatik Abitur Bayern 2017 / II - Lösung Informatik Abitur Bayern 2017 / II - Lösung Autoren: Wolf (1) Wagner (2) Scharnagl (3-5) 1a 5 1b Diese Methode vergleicht den Namen des Interpreten eines jeden Elements der Liste mit dem gegebenen Namen.

Mehr

Informatik II Übung, Woche 14

Informatik II Übung, Woche 14 Giuseppe Accaputo 7. April, 2016 Plan für heute 1. Java Klassen Beispiel: Implementation eines Vorlesungsverzeichnis (VVZ) 2. Informatik II (D-BAUG) Giuseppe Accaputo 2 Java Klassen Beispiel: Implementation

Mehr

13. Binäre Suchbäume

13. Binäre Suchbäume 1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (07 - Skiplisten) Prof. Dr. Susanne Albers

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (07 - Skiplisten) Prof. Dr. Susanne Albers Vorlesung Informatik 2 Algorithmen und Datenstrukturen (07 - Skiplisten) Prof. Dr. Susanne Albers Skiplisten. Perfekte Skiplisten 2. Randomisierte Skiplisten 3. Verhalten von randomisierten Skiplisten

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 4 FS 15

Datenstrukturen & Algorithmen Lösungen zu Blatt 4 FS 15 Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 18. März

Mehr

Binäre Bäume Darstellung und Traversierung

Binäre Bäume Darstellung und Traversierung Binäre Bäume Darstellung und Traversierung Name Frank Bollwig Matrikel-Nr. 2770085 E-Mail fb641378@inf.tu-dresden.de Datum 15. November 2001 0. Vorbemerkungen... 3 1. Terminologie binärer Bäume... 4 2.

Mehr

Algorithmen und Datenstrukturen Suchbaum

Algorithmen und Datenstrukturen Suchbaum Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen

Mehr

4.4.1 Implementierung vollständiger Bäume mit Feldern. Reguläre Struktur: Nachfolger des Knoten i sind die Knoten 2*i und 2*i+1.

4.4.1 Implementierung vollständiger Bäume mit Feldern. Reguläre Struktur: Nachfolger des Knoten i sind die Knoten 2*i und 2*i+1. 4.4 Implementierung von Bäumen 4.4.1 Implementierung vollständiger Bäume mit Feldern 1 3 2 7 9 3 4 8 5 17 12 10 6 7 8 13 11 18 9 10 Reguläre Struktur: Nachfolger des Knoten i sind die Knoten 2*i und 2*i+1.

Mehr

Binärbäume. Prof. Dr. E. Ehses, 2014 1

Binärbäume. Prof. Dr. E. Ehses, 2014 1 Binärbäume Grundbegriffe der Graphentheorie Bäume und Ihre Anwendungen Unterschiedliche Darstellungen von Bäumen und Binärbäumen Binärbäume in Java Rekursive Traversierung von Binärbäumen Ebenenweise Traversierung

Mehr

Abgabe: (vor 12 Uhr)

Abgabe: (vor 12 Uhr) TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Übungsblatt 7 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,

Mehr

// Objekt-Methoden: public void insert(int x) { next = new List(x,next); } public void delete() { if (next!= null) next = next.next; } public String

// Objekt-Methoden: public void insert(int x) { next = new List(x,next); } public void delete() { if (next!= null) next = next.next; } public String // Objekt-Methoden: public void insert(int x) { next = new List(x,next); } public void delete() { if (next!= null) next = next.next; } public String tostring() { String result = "["+info; for(list t=next;

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

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

Schein-/Bachelorklausur Teil 2 am Zulassung: Mindestens 14 Punkte in Teilklausur 1 und 50% der Übungspunkte aus dem 2. Übungsblock.

Schein-/Bachelorklausur Teil 2 am Zulassung: Mindestens 14 Punkte in Teilklausur 1 und 50% der Übungspunkte aus dem 2. Übungsblock. Schein-/Bachelorklausur Teil 2 am 13.02.2007 Zulassung: Mindestens 14 Punkte in Teilklausur 1 und 50% der Übungspunkte aus dem 2. Übungsblock. Alle Studiengänge außer Bachelor melden sich über die Lehrstuhlwebseite

Mehr