2 Java: Bäume. 2.1 Implementierung von Bäumen. 2.2 Implementierung eines binären Suchbaums. 2.3 Traversierung von Bäumen

Größe: px
Ab Seite anzeigen:

Download "2 Java: Bäume. 2.1 Implementierung von Bäumen. 2.2 Implementierung eines binären Suchbaums. 2.3 Traversierung von Bäumen"

Transkript

1 2 2 Java: Bäume 2.1 Implementierung von Bäumen 2.2 Implementierung eines binären Suchbaums 2.3 Traversierung von Bäumen 2.4 Implementierung von Heapsort 19

2 Teil II Java: Bäume Überblick Implementierung von Bäumen Implementierung eines binären Suchbaums Traversierung von Bäumen Implementierung von Heapsort Saake/Schallehn Algorithmen & Datenstrukturen II 2 1 Implementierung von Bäumen Allgemein: Datenstruktur bestehend aus Baum, Baumknoten und den vom Baum organisierten Datenobjekten Unterscheidungen nach Verzweigungsgrad des Baumes geordnetem oder ungeordnetem Baum Anzahl Knotentypen Suchbäume Verzeigerung der Daten Vorgehensweise für Einfügen, Löschen, etc. Saake/Schallehn Algorithmen & Datenstrukturen II Uni Magdeburg, WS 2005/06

3 2 Allgemeine Struktur Baumklasse mit Baum-spezifischen Attributen und Methoden public class Tree { TreeNode root; Knotenklasse mit knoten-spezifischen Attributen und Methoden private class TreeNode { Saake/Schallehn Algorithmen & Datenstrukturen II 2 3 Alternative: mit Java-Generics Baum für Elemente eines bestimmten Typs T public class Tree<T> { TreeNode<T> root; Objekte des Typs T sind über Knoten verwaltet private class TreeNode<T> { T element; Saake/Schallehn Algorithmen & Datenstrukturen II 2 4 Alternativen: mit Vererbung Jeder Baum ist auch ein Knoten public class Tree extends TreeNode { bzw. jeder Knoten ist auch ein Baum private class TreeNode extends Tree { Meist nicht sinnvoll, da Klassen mit sehr unterschiedlichen Methoden Saake/Schallehn Algorithmen & Datenstrukturen II 2 5 Uni Magdeburg, WS 2005/06 21

4 Alternativen: Anzahl Knotentypen <HTML> <HEAD> <TITLE>Hello </TITLE> </HEAD> <BODY> Hello World! </BODY> </HTML> ElementNode HTML ElementNode ElementNode HEAD BODY ElementNode TextNode TITLE Hello World! TextNode Hello Saake/Schallehn Algorithmen & Datenstrukturen II 2 6 Alternativen: Anzahl Knotentypen /2 Verschiedene Knotentypen sinnvoll z.b. bei Syntaxbäumen für Statements, Blöcke, Operanden, Operatoren etc. bei hierarchischen Dokumentenstrukturen für verschiedene Dokumentenabschnitte wie Kapitel, Überschriften, Paragraphen, eingebettete Grafiken etc. bei Dateiverwaltung für Laufwerke, Verzeichnis, Dateien, Verknüpfungen etc. bei unterschiedlicher Struktur von internen Knoten (Verzweigung zu Kindknoten) und Blattknoten (Daten) Saake/Schallehn Algorithmen & Datenstrukturen II 2 7 Alternativen: Verzweigungsgrad und Ordnung Verzweigungen zu Kindknoten als Referenzen in Baumknoten Ordnung: ist die Reihenfolge der Kindknoten von Bedeutung? ja: geordneter Baum nein: ungeordneter Baum Verzweigungsgrad: (maximale) Anzahl der möglichen Kindknoten beliebiger Verzweigungsgrad fester (maximaler) Verzweigungsgrad n n-ärer Baum wichtiger Sonderfall: n = 2 binärer Baum Saake/Schallehn Algorithmen & Datenstrukturen II Uni Magdeburg, WS 2005/06

5 2 Ungeordneter Baum mit beliebigem Verzweigungsgrad Umsetzung der Verzweigung public class TreeNode<T> { Set<TreeNode<T> > childnodes; Speicheraufwand bei Verwendung vonset<> sehr groß Alternative: dynamisch anzupassende Arrays Saake/Schallehn Algorithmen & Datenstrukturen II 2 9 Geordneter Baum mit beliebigem Verzweigungsgrad Umsetzung mit Liste public class TreeNode<T> { List<TreeNode<T> > childnodes; Bessere Speicher- und Laufzeiteffizienz auch hier mit Arrays public class TreeNode<T> { TreeNode<T>[] childnodes; Saake/Schallehn Algorithmen & Datenstrukturen II 2 10 Geordneter Baum mit festem Verzweigungsgrad n-ärer Baum public class TreeNode<T> { TreeNode<T>[] childnodes = new TreeNode<T>[n]; Binärer Baum public class TreeNode<T> { TreeNode<T> left, right; Saake/Schallehn Algorithmen & Datenstrukturen II 2 11 Uni Magdeburg, WS 2005/06 23

6 Alternative: Suchbaum Suchbaum erfordert das zusätzliche Abspeichern eines Schlüssels public class Tree<K,T> { TreeNode<K,T> root; public class TreeNode<K,T> { K key; T element; Saake/Schallehn Algorithmen & Datenstrukturen II 2 12 Suchbaum: Schlüssel und Daten Student: Wolf Meier Studiengang: IF Jahrgang: Student: Peter Pau Studiengang: WIF Jahrgang: Student: Karl Fuchs Studiengang: CV Jahrgang: Student: Lutz Lau Studiengang: IF Jahrgang: Student: Knut Boll Studiengang: IF Jahrgang: 2002 Saake/Schallehn Algorithmen & Datenstrukturen II 2 13 Alternative: Suchbaum Nicht-eindeutiger Suchschlüssel erzwingt mengenwertige Einträge public class Tree<K,T> { TreeNode<K,T> root; public class TreeNode<K,T> { K key; Set<T> elements; Saake/Schallehn Algorithmen & Datenstrukturen II Uni Magdeburg, WS 2005/06

7 2 Suchbaum: Schlüssel und Daten Gunter Saake Bob Geldof Eike Schallehn Can Türker Joan Jett Nick Cave Saake/Schallehn Algorithmen & Datenstrukturen II 2 15 Binärer Suchbaum Im folgenden: binärer Suchbaum ohne Betrachtung der Datenelemente eigentliche Daten für Verständnis der Algorithmen unerheblich public class Tree<K> { TreeNode<K> root; public class TreeNode<K> { K key; TreeNode<K> left, right; Saake/Schallehn Algorithmen & Datenstrukturen II 2 16 Weitere Implementierungsalternativen Häufige auftretendes Kriterium: Verbesserung der Speicher- und. Laufzeiteffizienz durch Speicherung in flachen Strukturen, z. B. Levelorder Speicherung eines binären Baumes in einem Array siehe Abschnitt zu Heapsort Laufzeiteffizienz durch kleinere innere Knoten: bei Suchbäumen Verweise auf Daten häufig nur an Blattknoten z.b. Binärbaum mit Verzweigung nach und > als Schlüssel Saake/Schallehn Algorithmen & Datenstrukturen II 2 17 Uni Magdeburg, WS 2005/06 25

8 Implementierung eines binären Suchbaums Binärer Suchbaum: Häufig verwendete Hauptspeicherstruktur Insbesondere geeignet für Schlüssel fester Größe, z.b. numerischeint,float undchar[n] Gewährleistet O(log 2 n) für Suchen, Einfügen und Löschen, vorausgesetzt Baum ist balanciert Später: Gewährleistung der Balancierung durch spezielle Algorithmen AVL- und Rot-Schwarz-Bäume Für Sekundärspeicher: größere, angepasste Knoten günstiger B-Bäume Für Zeichenketten als Schlüssel: variable Schlüsselgröße Tries Saake/Schallehn Algorithmen & Datenstrukturen II 2 18 Implementierung eines binären Suchbaums /2 Code inbinarysearchtree.java auf der Vorlesungsseite. Saake/Schallehn Algorithmen & Datenstrukturen II 2 19 Implementierung eines binären Suchbaums /3 public class BinarySearchTree<K extends Comparable<K> > implements Iterable<K> { static class TreeNode<K extends Comparable<K> > { K key; TreeNode<K> left = null, right = null; Saake/Schallehn Algorithmen & Datenstrukturen II Uni Magdeburg, WS 2005/06

9 2 Implementierung eines binären Suchbaums /4 Schlüssel müssencomparable-interface, d.h. compareto()-methode, implementieren, da Suchbaum auf Vergleichen der Schlüssel basiert Baum selber implementiertiterable-interface, d.h. iterator()-methode, um Traversierung des Baums über Iterator zu erlauben später bei Baumtraversierung TreeNode und alles weitere als innere Klassen implementiert erlaubt Zugriff auf Attribute und Methoden der Baumklasse Saake/Schallehn Algorithmen & Datenstrukturen II 2 21 Implementierung eines binären Suchbaums /5 Besonderheit der Implementierung: leere Pseudoknotenhead undnullnode zur Vereinfachung der Algorithmen Grundlegende Algorithmen Suchen Einfügen Löschen Saake/Schallehn Algorithmen & Datenstrukturen II 2 22 Implementierung mit Pseudoknoten head nullnode Saake/Schallehn Algorithmen & Datenstrukturen II 2 23 Uni Magdeburg, WS 2005/06 27

10 Implementierung mit Pseudoknoten /2 public class BinarySearchTree<K> { public BinarySearchTree () { head = new TreeNode<K>(null); nullnode = new TreeNode<K>(null); nullnode.setleft(nullnode); nullnode.setright(nullnode); head.setright(nullnode); Saake/Schallehn Algorithmen & Datenstrukturen II 2 24 Implementierung mit Pseudoknoten /3 Ziel: Verminderung von Sonderfällen head-knoten: Einfügen oder Löschen des Wurzelknotens würde spezielle Behandlung in der Baum-Klasse erfordern null-knoten: Erspart Testen, ob zum linken und rechten Teilknoten navigiert werden kann imnullnode einfaches Beenden der Navigation (z.b. Rekursion) möglich Saake/Schallehn Algorithmen & Datenstrukturen II 2 25 Suchen im binären Suchbaum Vergleich des Suchschlüssels mit Knotenschlüssel 2. wenn kleiner, dann in linken Teilbaum weiter suchen 3. wenn größer, dann in rechten Teilbaum weiter suchen 4. sonst gefunden Saake/Schallehn Algorithmen & Datenstrukturen II Uni Magdeburg, WS 2005/06

11 2 Binärer Suchbaum: Knotenvergleich class TreeNode< > { public int comparekeyto(k k) { return (key == null? -1 : key.compareto(k)); Saake/Schallehn Algorithmen & Datenstrukturen II 2 27 Binärer Suchbaum: Rekursives Suchen protected TreeNode<K> recursivefindnode (TreeNode<K> n, K k) { if (n!= nullnode) { int cmp = n.comparekeyto (k); if (cmp == 0) return n; else if (cmp > 0) return recursivefindnode (n.getleft (), k); else return recursivefindnode (n.getright (), k); else return null; Saake/Schallehn Algorithmen & Datenstrukturen II 2 28 Binärer Suchbaum: Iteratives Suchen protected TreeNode<K> iterativefindnode (K k) { TreeNode<K> n = head.getright(); while (n!= nullnode) { int cmp = n.comparekeyto(k); if (cmp == 0) return n; else n = (cmp > 0? n.getleft () : n.getright ()); return null; Saake/Schallehn Algorithmen & Datenstrukturen II 2 29 Uni Magdeburg, WS 2005/06 29

12 Spezialfall: Suchen des kleinsten Elementes public K findminelement () { TreeNode<K> n = head.getright(); while (n.getleft ()!= nullnode) n = n.getleft (); return n.getkey (); Saake/Schallehn Algorithmen & Datenstrukturen II 2 30 Spezialfall: Suchen des größten Elementes public K findmaxelement () { TreeNode<K> n = head.getright(); while (n.getright ()!= nullnode) n = n.getright (); return n.getkey (); Saake/Schallehn Algorithmen & Datenstrukturen II 2 31 Binärer Suchbaum: Einfügen Schüssel Einfügen prinzipiell in 2 Schritten 1. Schritt: Einfügeposition suchen Blattknoten mit nächstkleinerem oder nächstgrößerem Schlüssel 2. Schritt: neuen Knoten erzeugen und als Kindknoten des Knoten aus Schritt 1 verlinken In Schritt 1: wenn Schlüssel bereits existiert, nicht erneut einfügen Saake/Schallehn Algorithmen & Datenstrukturen II Uni Magdeburg, WS 2005/06

13 2 Einfügen 1: Einfügeposition Suchen public boolean insert (K k) { System.out.println( insert: + k); TreeNode<K> parent = head, child = head.getright(); while (child!= nullnode) { parent = child; int cmp = child.comparekeyto(k); if (cmp == 0) return false; else if (cmp > 0) child = child.getleft (); else child = child.getright (); Saake/Schallehn Algorithmen & Datenstrukturen II 2 33 Einfügen 2: neuen Knoten Verlinken TreeNode<K> node = new TreeNode<K>(k); node.setleft(nullnode); node.setright(nullnode); if (parent.comparekeyto(k) > 0) parent.setleft (node); else parent.setright (node); return true; Saake/Schallehn Algorithmen & Datenstrukturen II 2 34 Binärer Suchbaum: Löschen Schüssel Löschen in 3 Schritten 1. Schritt: zu löschenden Knoten finden 2. Schritt: Nachrücker Knoten finden 2.1 Fall: externer Knoten ohne Kinder ersetzen durchnullnode 2.2 Fall: nur ein rechter Kindknoten ersetzen durch rechten Kindknoten 2.3 Fall: nur ein linker Kindknoten ersetzen durch linken Kindknoten 2.4 Fall: interner Knoten mit Kindern links und rechts ersetzen durch Knoten mit kleinstem (alternativ: größtem) Schlüssel im rechten (alternativ: linken) Teilbaum 3. Schritt: Baum reorganisieren Saake/Schallehn Algorithmen & Datenstrukturen II 2 35 Uni Magdeburg, WS 2005/06 31

14 Löschen 1: Knoten suchen public boolean remove (K k) { TreeNode<K> parent = head, node = head.getright(), child = while (node!= nullnode) { int cmp = node.comparekeyto(k); if (cmp == 0) break; else { parent = node; node = (cmp > 0? node.getleft() : node.getright()); if (node == nullnode) return false; Saake/Schallehn Algorithmen & Datenstrukturen II 2 36 Löschen 2: Nachrücker finden /1 if (node.getleft() == nullnode && node.getright() == nullnode child = nullnode; else if (node.getleft() == nullnode) child = node.getright(); else if (node.getright() == nullnode) child = node.getleft(); Saake/Schallehn Algorithmen & Datenstrukturen II 2 37 Löschen 2: Nachrücker finden /2 else { child = node.getright(); tmp = node; while (child.getleft ()!= nullnode) { tmp = child; child = child.getleft (); child.setleft(node.getleft()); if (tmp!= node) { tmp.setleft(child.getright()); child.setright(node.getright()); Saake/Schallehn Algorithmen & Datenstrukturen II Uni Magdeburg, WS 2005/06

15 2 Löschen 3: Baum Reorganisieren if (parent.getleft() == node) parent.setleft(child); else parent.setright(child); return true; Saake/Schallehn Algorithmen & Datenstrukturen II 2 39 Entartung von Bäumen Ungünstige Einfüge- oder Löschreihenfolge führt zu extremer Unbalanciertheit Extremfall: Baum wird zur Liste Dann Operationen mit Komplexität O(n) Beispiel for (int i=0; i < 10; i ++) tree.insert(i); Vermeidung: durch spezielle Algorithmen zum Einfügen und Löschen Saake/Schallehn Algorithmen & Datenstrukturen II 2 40 Traversierung von (Binär-)bäumen Traversierung durch Methoden Inorder Preorder Postorder Levelorder Traversierung mit Hilfe von Iteratoren Erfordert Zwischenspeicherung des Traversierungszustands Saake/Schallehn Algorithmen & Datenstrukturen II 2 41 Uni Magdeburg, WS 2005/06 33

16 Preorder-Traversierung Preorder-Traversierung: Behandlung (Ausgabe) des aktuellen Knotens zuerst, dann linker und rechter Teilbaum (W-L-R) static class TreeNode<K extends Comparable<K> > { public void traverse() { if (key == null) return; System.out.print( + key); left.traverse(); right.traverse(); Saake/Schallehn Algorithmen & Datenstrukturen II 2 42 Inorder-Traversierung Inorder-Traversierung: Behandlung des linken Teilbaums, dann des aktuellen Knotens, dann rechter Teilbaum (L-W-R) Gibt Baum in sortierter Reihenfolge aus public void traverse() { if (key == null) return; left.traverse(); System.out.print( + key); right.traverse(); Saake/Schallehn Algorithmen & Datenstrukturen II 2 43 Postorder-Traversierung Postorder-Traversierung: Behandlung des linken und rechten Teilbaums, dann erst des aktuellen Knotens (L-R-W) public void traverse() { if (key == null) return; left.traverse(); right.traverse(); System.out.print( + key); Saake/Schallehn Algorithmen & Datenstrukturen II Uni Magdeburg, WS 2005/06

17 2 Levelorder-Traversierung Levelorder-Traversierung: Ausgabe der Knoten geordnet nach 1. Baumebene, beginnend bei der Wurzel 2. Ordnung innerhalb der Baumebene, beginnend bei kleinstem Element Implementierung: siehe Übung Saake/Schallehn Algorithmen & Datenstrukturen II 2 45 Traversierung mit Iteratoren Iteratoren erlauben Schrittweise Abarbeitung Verwendung von Standardschleifen für Baumdurchlauf for (Integer i : tree) System.out.print(i); Erfordert Zwischenspeicherung des Bearbeitungszustands Unterstützung verschiedener Iteratoren Saake/Schallehn Algorithmen & Datenstrukturen II 2 46 Traversierung mit Iteratoren /2 public class BinarySearchTree<K extends Comparable<K> > implements Iterable<K> { public static final int INORDER = 1; public static final int PREORDER = 2; public static final int POSTORDER = 3; public static final int LEVELORDER = 4; public void setiterationorder(int io) { if (io < 1 io > 4) return; iterationorder = io; Saake/Schallehn Algorithmen & Datenstrukturen II 2 47 Uni Magdeburg, WS 2005/06 35

18 Traversierung mit Iteratoren /3 public Iterator<K> iterator () { switch (iterationorder) { case INORDER: return new InorderIterator<K>(this); case PREORDER: return new PreorderIterator<K>(this); case POSTORDER: return new PostorderIterator<K>(this); case LEVELORDER: return new LevelorderIterator<K>(this); return new InorderIterator<K>(this); Saake/Schallehn Algorithmen & Datenstrukturen II 2 48 Inorder-Iterator /1 class InorderIterator <K extends Comparable<K> > implements java.util.iterator<k> { java.util.stack<treenode<k> > st = new java.util.stack< TreeNode<K> >(); public InorderIterator(BinarySearchTree<K> tree) { TreeNode<K> node = tree.head.getright(); while (node!= nullnode) { st.push(node); node = node.getleft(); Saake/Schallehn Algorithmen & Datenstrukturen II 2 49 Inorder-Iterator /2 public boolean hasnext() { return!st.isempty(); public K next() { TreeNode<K> node = st.pop(); K obj = node.getkey(); node = node.getright(); while (node!= nullnode) { st.push(node); node = node.getleft(); return obj; Saake/Schallehn Algorithmen & Datenstrukturen II Uni Magdeburg, WS 2005/06

19 2 Preorder-Iterator /1 class PreorderIterator <K extends Comparable<K> > implements java.util.iterator<k> { public PreorderIterator(BinarySearchTree<K> tree) { if (tree.head.getright()!= nullnode) st.push(tree.head.getright()); Saake/Schallehn Algorithmen & Datenstrukturen II 2 51 Preorder-Iterator /2 public K next() { TreeNode<K> node = st.pop(); K obj = node.getkey(); if (node.getright()!= nullnode) st.push(node.getright()); if (node.getleft()!= nullnode) st.push(node.getleft()); return obj; Saake/Schallehn Algorithmen & Datenstrukturen II 2 52 Levelorder-Iterator /1 class LevelorderIterator <K extends Comparable<K> > implements java.util.iterator<k> { private java.util.queue<treenode<k> > q = new java.util.linkedlist<treenode<k> >(); public LevelorderIterator( BinarySearchTree<K> tree) { TreeNode<K> node = tree.head.getright(); if (node!= nullnode) q.offer(node); Saake/Schallehn Algorithmen & Datenstrukturen II 2 53 Uni Magdeburg, WS 2005/06 37

20 Levelorder-Iterator /2 public K next() { TreeNode<K> node = q.poll(); K obj = node.getkey(); if (node.getleft()!= nullnode) q.offer(node.getleft()); if (node.getright()!= nullnode) q.offer(node.getright()); return obj; Saake/Schallehn Algorithmen & Datenstrukturen II 2 54 Implementierung von Heapsort Heap-Eigenschaft Baum ist vollständig, d.h., die Blattebene ist von links nach rechts gefüllt. Schlüssel eines jeden Knotens ist kleiner (oder gleich) als die Schlüssel seiner Kinder. Implementierung als Array (Levelorder-Abspeicherung eines Baums) Auf dessen Basis einfacher und effizienter Sortieralgorthmus umsetzbar Saake/Schallehn Algorithmen & Datenstrukturen II 2 55 Implementierung von Heapsort Code inheapsort.java auf der Vorlesungsseite. Saake/Schallehn Algorithmen & Datenstrukturen II Uni Magdeburg, WS 2005/06

21 2 Heap als Java-Array [0][1][2][3][4][5] Saake/Schallehn Algorithmen & Datenstrukturen II 2 57 Heapsort: Programmrahmen public class HeapSort { public static void main(string[] args) { Comparable[] array = initarray(20); printarray(array); heapsort(array); printarray(array); Saake/Schallehn Algorithmen & Datenstrukturen II 2 58 Heapsort: Hauptalgorithmus public static void heapsort(comparable[] f) { int i; for (i = f.length / 2; i >= 0; i--) percolate(f, i, f.length); for (i = f.length - 1; i > 0; i--) { swap(f, 0, i); percolate(f, 0, i); Saake/Schallehn Algorithmen & Datenstrukturen II 2 59 Uni Magdeburg, WS 2005/06 39

22 Heapsort: Heap herstellen private static void percolate( Comparable[] f, int idx, int last) { int i = idx + 1, j; while (2 * i <= last) { j = 2 * i; if (j < last && f[j-1].compareto(f[j]) > 0) j++; if (f[i-1].compareto(f[j-1]) > 0) { swap(f,i-1,j-1); i = j; else break; Saake/Schallehn Algorithmen & Datenstrukturen II Uni Magdeburg, WS 2005/06

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

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

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

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

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

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

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen

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

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v) Ein Baum T mit Knotengraden 2, dessen Knoten Schlüssel aus einer total geordneten Menge speichern, ist ein binärer Suchbaum (BST), wenn für jeden inneren Knoten v von T die Suchbaumeigenschaft gilt: Der

Mehr

Tutorium Algorithmen & Datenstrukturen

Tutorium Algorithmen & Datenstrukturen June 16, 2010 Binärer Baum Binärer Baum enthält keine Knoten (NIL) besteht aus drei disjunkten Knotenmengen: einem Wurzelknoten, einem binären Baum als linken Unterbaum und einem binären Baum als rechten

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

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

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

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

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

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

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

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert Inhalt Einführung 1. Arrays 1. Array unsortiert 2. Array sortiert 3. Heap 2. Listen 1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert 3. Bäume

Mehr

Kap. 4.2: Binäre Suchbäume

Kap. 4.2: Binäre Suchbäume Kap. 4.2: Binäre Suchbäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 11. VO DAP2 SS 2009 26. Mai 2009 1 Zusätzliche Lernraumbetreuung Morteza Monemizadeh:

Mehr

Suchen und Sortieren

Suchen und Sortieren (Folie 69, Seite 36 im Skript) 5 6 1 4 Als assoziatives Array geeignet Schlüssel aus geordneter Menge Linke Kinder kleiner, rechte Kinder größer als Elternknoten Externe und interne Knoten Externe Knoten

Mehr

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein. Aufgabe 10 Binäre Bäume a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge, 28, 35, 31, 9, 4,, 17, 37, 25 ein. 1. Einfügen von : 3. Einfugen von 35: 2. Einfügen von 28: 28 28 10. Einfügen

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

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 Bäume robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische Grundprinzipien 3. Sortierverfahren 4. Halden

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

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

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

Informatik II, SS 2014

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

Mehr

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter

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

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10 Binäre Bäume Bäume gehören zu den wichtigsten Datenstrukturen in der Informatik. Sie repräsentieren z.b. die Struktur eines arithmetischen Terms oder die Struktur eines Buchs. Bäume beschreiben Organisationshierarchien

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

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

10. Kapitel (Teil1) BÄUME GRUNDLAGEN. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm

10. Kapitel (Teil1) BÄUME GRUNDLAGEN. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm 10. Kapitel (Teil1) BÄUME GRUNDLAGEN Algrithmen & Datenstrukturen Prf. Dr. Wlfgang Schramm Übersicht 1 1. Einführung 2. Algrithmen 3. EigenschaCen vn Prgrammiersprachen 4. Algrithmenparadigmen 5. Suchen

Mehr

Binärbäume: Beispiel

Binärbäume: Beispiel Binärbäume Als Beispiel für eine interessantere dynamische Datenstruktur sehen wir uns jetzt Binärbäume an Ein Binärbaum wird rekursiv definiert: Er ist leer oder besteht aus einem Knoten (die Wurzel des

Mehr

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Algorithmen und Datenstrukturen 265 10 Binäre Suchbäume Suchbäume Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Kann als Wörterbuch, aber auch zu mehr eingesetzt werden (Prioritätsschlange)

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

13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems

13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems 13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems 13.1 Modellierung des Rucksackproblems 13.2 Lösung mit Greedy-Algorithmus 13.3 Lösung mit Backtracking 13.4 Lösung mit Dynamischer Programmierung

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

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

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen: 6 Partiell geordnete binäre Bäume: Heap (Haufen) Motivation für manchen Anwendungen nur partielle Ordnung der Elemente statt vollständiger nötig, z.b. - Prioritätsschlange: nur das minimale (oder maximale)

Mehr

6 Baumstrukturen. Formale Grundlagen der Informatik I Herbstsemester 2012. Robert Marti

6 Baumstrukturen. Formale Grundlagen der Informatik I Herbstsemester 2012. Robert Marti 6 Baumstrukturen Formale Grundlagen der Informatik I Herbstsemester 2012 Robert Marti Vorlesung teilweise basierend auf Unterlagen von Prof. emer. Helmut Schauer Beispiel: Hierarchisches File System 2

Mehr

Informatik II, SS 2014

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

Mehr

Programmiertechnik II

Programmiertechnik II Bäume Symboltabellen Suche nach Werten (items), die unter einem Schlüssel (key) gefunden werden können Bankkonten: Schlüssel ist Kontonummer Flugreservierung: Schlüssel ist Flugnummer, Reservierungsnummer,...

Mehr

Tutoraufgabe 1 (2 3 4 Bäume):

Tutoraufgabe 1 (2 3 4 Bäume): Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Übung F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe ( Bäume): a) Löschen Sie den Wert aus dem folgenden Baum und geben Sie den dabei

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapiteltests zum Leitprogramm Binäre Suchbäume Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm

Mehr

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Lösungsvorschläge. zu den Aufgaben im Kapitel 4 Lösungsvorschläge zu den Aufgaben im Kapitel 4 Aufgabe 4.1: Der KNP-Algorithmus kann verbessert werden, wenn in der Funktion nexttabelle die Zuweisung next[tabindex] = ruecksprung; auf die etwas differenziertere

Mehr

In diesem Kapitel behandeln wir erste Algorithmen mit dynamischen Strukturen, wie Bäume und Graphen. 1. Bäume Grundlagen...

In diesem Kapitel behandeln wir erste Algorithmen mit dynamischen Strukturen, wie Bäume und Graphen. 1. Bäume Grundlagen... Bäume und Graphen In diesem Kapitel behandeln wir erste Algorithmen mit dynamischen Strukturen, wie Bäume und Graphen. Inhalt 1. Bäume... 1.1. Grundlagen... 1.. Repräsentation von Binärbäumen... 9 1..1.

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element

Mehr

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können. 6. Bäume Lernziele 6. Bäume Lernziele: Definition und Eigenschaften binärer Bäume kennen, Traversierungsalgorithmen für binäre Bäume implementieren können, die Bedeutung von Suchbäumen für die effiziente

Mehr

Verkettete Datenstrukturen: Bäume

Verkettete Datenstrukturen: Bäume Verkettete Datenstrukturen: Bäume 1 Graphen Gerichteter Graph: Menge von Knoten (= Elementen) + Menge von Kanten. Kante: Verbindung zwischen zwei Knoten k 1 k 2 = Paar von Knoten (k 1, k 2 ). Menge aller

Mehr

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl: AVL-Bäume Analyse (Folie 85, Seite 39 im Skript) Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl: 0 falls n = 0 F n = 1 falls

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

Datenstrukturen. einfach verkettete Liste

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

Mehr

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum

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

Mehr

Primitive Datentypen

Primitive Datentypen Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.

Mehr

Informatik II. PVK Part1 Severin Wischmann wiseveri@student.ethz.ch n.ethz.ch/~wiseveri

Informatik II. PVK Part1 Severin Wischmann wiseveri@student.ethz.ch n.ethz.ch/~wiseveri Informatik II PVK Part1 Severin Wischmann wiseveri@student.ethz.ch n.ethz.ch/~wiseveri KAUM JAVA Kaum Java Viel Zeit wird für Java-spezifisches Wissen benützt Wenig wichtig für Prüfung Letztjähriger Assistent

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 5 Lösungsvorschlag Objektorientierte Programmierung 22. 05. 2006 Lösung 9 (SMS-Eingabe am

Mehr

Algorithmen & Datenstrukturen 1. Klausur

Algorithmen & Datenstrukturen 1. Klausur Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse

Mehr

Suchbäume mit inneren Knoten verschiedener Knotengrade.

Suchbäume mit inneren Knoten verschiedener Knotengrade. Was bisher geschah rekursive Datenstrukturen: lineare Datenstrukturen: Liste, Stack, Queue hierarchische Datenstrukturen: Bäume allgemeine Bäume Binäre Bäume Unäre Bäume = Listen Tiefe eines Knotens in

Mehr

Grundlagen der Künstlichen Intelligenz

Grundlagen der Künstlichen Intelligenz Grundlagen der Künstlichen Intelligenz 6. Klassische Suche: Datenstrukturen für Suchalgorithmen Malte Helmert Universität Basel 7. März 2014 Klassische Suche: Überblick Kapitelüberblick klassische Suche:

Mehr

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 13./14. VO DAP2 SS 2009 2./4. Juni 2009 1 2. Übungstest

Mehr

1. Aufgabe (6 Punkte): Java-Programmierung (Arrays)

1. Aufgabe (6 Punkte): Java-Programmierung (Arrays) Der folgende Mitschrieb wurde von Prof. Alexa am 16.07.2008 als Probeklausur in der MPGI2 Vorlesung gezeigt und wurde auf http://www.basicinside.de/2008/node/94 veröffentlicht. Die Abschrift ist unter

Mehr

Übung 6. Rot-Schwarz-Bäume

Übung 6. Rot-Schwarz-Bäume Übung 6. Rot-Schwarz-Bäume Top-Down 2.-3-4-Bäume Zum Ausschluß des ungünstigsten Falls bei binären Suchbäumen ist eine gewisse Flexibilität in den verwendeten Datenstrukturen nötig. Das kann bspw. durch

Mehr

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen 9.4 Binäre Suchbäume Erweiterung: Einfügen an der Wurzel Standardimplementierung: Der neue Schlüssel wird am Ende des Suchpfades angefügt (natürlich, weil zuerst festgestellt werden muss, ob der Schlüssel

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

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

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.4 Binäre Suche Aufgabenstellung: Rate eine Zahl zwischen 100 und 114! Algorithmus 4.1 INPUT: OUTPUT:

Mehr

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung 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 student"

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Suchen und Sortieren Sortieren. Heaps

Suchen und Sortieren Sortieren. Heaps Suchen und Heaps (Folie 245, Seite 63 im Skript) 3 7 21 10 17 31 49 28 14 35 24 42 38 Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die

Mehr

Kapitel 9 Suchalgorithmen

Kapitel 9 Suchalgorithmen Kapitel 9 Suchalgorithmen Suchverfahren: Verfahren, das in einem Suchraum nach Mustern oder Objekten mit bestimmten Eigenschaften sucht. Vielfältige Anwendungsbereiche für Suchverfahren: u.a. Suchen in

Mehr

Teil V. Generics und Kollektionen in Java

Teil V. Generics und Kollektionen in Java Teil V Generics und Überblick 1 Parametrisierbare Datenstrukturen in Java 2 Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 5 1 Parametrisierbare Datenstrukturen in Java Motivation für

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

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

Java Einführung Collections

Java Einführung Collections Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

Suchen und Sortieren (Die klassischen Algorithmen)

Suchen und Sortieren (Die klassischen Algorithmen) Suchen und Sortieren (Die klassischen Algorithmen) Lineare Suche und Binäre Suche (Vorbedingung und Komplexität) Sortieralgorithmen (allgemein) Direkte Sortierverfahren (einfach aber langsam) Schnelle

Mehr

14. Rot-Schwarz-Bäume

14. Rot-Schwarz-Bäume Bislang: Wörterbuchoperationen bei binären Suchbäume effizient durchführbar, falls Höhe des Baums klein. Rot-Schwarz-Bäume spezielle Suchbäume. Rot-Schwarz-Baum mit n Knoten hat Höhe höchstens 2 log(n+1).

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

Algorithmen und Datenstrukturen SS09

Algorithmen und Datenstrukturen SS09 Foliensatz 8 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 29 TU Ilmenau Seite / 54 Binärbäume TU Ilmenau Seite 2 / 54 Binäre Bäume Bäume und speziell

Mehr

Einführung in die Informatik 1

Einführung in die Informatik 1 Einführung in die Informatik 1 Datenorganisation und Datenstrukturen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00

Mehr

Name: Seite 1. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

Name: Seite 1. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort. Name: Seite 1 Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort. Aufgabe 1 (8 Punkte) 1. Wie wird bei der Zusicherungsmethode die Zusicherung genannt, die vor Eintritt

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 13 (18.6.2014) Binäre Suchbäume IV (Rot Schwarz Bäume) Algorithmen und Komplexität Rot Schwarz Bäume Ziel: Binäre Suchbäume, welche immer

Mehr

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete Kapitel 4.8-4.11: Andere dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.6 AVL-Bäume 4.8 Rot-Schwarz-Bäume Idee: Verwende Farben, um den Baum vertikal zu

Mehr

1. Grundlegende Konzepte in Java (6 Punkte)

1. Grundlegende Konzepte in Java (6 Punkte) 1. Grundlegende Konzepte in Java (6 Punkte) a) Welches der folgenden Literale ist korrekt und wenn ja, von welchem Typ ist es? "true" nicht korrekt X korrekt vom Typ String 'true' X nicht korrekt korrekt

Mehr

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

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen 5. Compiler Gliederung 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

Fakultät Wirtschaftswissenschaft

Fakultät Wirtschaftswissenschaft Fakultät Wirtschaftswissenschaft Matrikelnr. Name Vorname KLAUSUR: Entwurf und Implementierung von Informationssystemen (32561) TERMIN: 11.09.2013, 14.00 16.00 Uhr PRÜFER: Univ.-Prof. Dr. Stefan Strecker

Mehr

Programmieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff

Programmieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff Programmieren in C Rekursive Strukturen Prof. Dr. Nikolaus Wulff Rekursive Strukturen Häufig müssen effizient Mengen von Daten oder Objekten im Speicher verwaltet werden. Meist werden für diese Mengen

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

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Rekurrenzen T(n) = T(n 1) + N beschreibt Laufzeitverhalten eines rekursiven Algorithmus

Rekurrenzen T(n) = T(n 1) + N beschreibt Laufzeitverhalten eines rekursiven Algorithmus Algorithmen und Datenstrukturen Übung Rekurrenzen T(n) = T(n ) + N beschreibt Laufzeitverhalten eines rekursiven Algorithmus Bsp. Fibunacci F(n) = F(n ) + F(n ) N F(0) = F() = F(N) rekursive Aufrufe,8

Mehr

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1 3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)

Mehr

Sortierte Folgen 250

Sortierte Folgen 250 Sortierte Folgen 250 Sortierte Folgen: he 1,...,e n i mit e 1 apple applee n kennzeichnende Funktion: M.locate(k):= addressof min{e 2 M : e k} Navigations Datenstruktur 2 3 5 7 11 13 17 19 00 Annahme:

Mehr

Programmiertechnik II

Programmiertechnik II 2007 Martin v. Löwis Priority Queues and Heapsort 2007 Martin v. Löwis 2 Priority Queue Abstrakter Datentyp Inhalt: Elemente mit Priorität Operationen: Einfügen: Angabe des Elements und seiner Priorität

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang

Mehr

Datenbankanwendungsprogrammierung Crashkurs Java

Datenbankanwendungsprogrammierung Crashkurs Java Datenbankanwendungsprogrammierung Crashkurs Java Denny Priebe Datenbankanwendungsprogrammierung p. Unterschiede zu C, C++ typedefs, Präprozessor Strukturen, Unions globale Funktionen Mehrfachvererbung

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 II - Übung 07. Christian Beckel

Informatik II - Übung 07. Christian Beckel Informatik II - Übung 07 Christian Beckel beckel@inf.ethz.ch 15.04.2015 Heute Besprechung Blatt 06 Demo: Objektorientierte Programmierung Hinweise zu Blatt 07 Christian Beckel 15/04/15 2 Besprechung Übungsblatt

Mehr

Java I Vorlesung Collections

Java I Vorlesung Collections Java I Vorlesung 5 Collections 24.5.2004 Abstrakte Klassen und Interfaces Arrays Java Collections Framework Abstrakte Klassen: Motivation Häufig will man eine Klasse schreiben, die nur als Basisklasse

Mehr