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. 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 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- 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

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

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

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

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

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

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

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

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

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

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

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

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

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 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

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes. Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel

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

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

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

Kapitel 9 Suchalgorithmen

Kapitel 9 Suchalgorithmen Kapitel 9 Suchalgorithmen Technische Universität München Suchverfahren: Verfahren, das in einem Suchraum nach Mustern oder Objekten mit bestimmten Eigenschaften sucht. Vielfältige Anwendungsbereiche für

Mehr

Gegeben Zieladresse, finde Nachbarknoten, an den Paket zu senden ist ("Routing-Tabelle")

Gegeben Zieladresse, finde Nachbarknoten, an den Paket zu senden ist (Routing-Tabelle) 8 Digitalbäume, Tries,, Suffixbäume 8.0 Anwendungen Internet-outer egeben Zieladresse, finde Nachbarknoten, an den Paket zu senden ist ("outing-tabelle") 3 network addr Host id 00 0000 000 0 00 0 0000

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Beispiel zu Datenstrukturen

Beispiel zu Datenstrukturen zu Datenstrukturen Passend zum Kurs 01661 Version Juni 2008 Dieter Hoffmann Dipl.-Inform. Diese Kurshilfe zum Kurs Datenstrukuren I (Kursnummer 01661) bei Prof. Dr. Güting (Lehrgebiet Praktische Informatik

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

Schnittstellen implementieren am Beispiel Suchbaum

Schnittstellen implementieren am Beispiel Suchbaum Motivation Informatik mit Java und BlueJ Schnittstellen implementieren am Beispiel Suchbaum von Bernhard Rosing Schreiben Sie eine Klasse Person, deren Instanzen in ein TreeSet (Suchbaum) eingefügt werden

Mehr

Vorname:... Matrikel-Nr.:... Unterschrift:...

Vorname:... Matrikel-Nr.:... Unterschrift:... Fachhochschule Mannheim Hochschule für Technik und Gestaltung Fachbereich Informatik Studiengang Bachelor of Computer Science Algorithmen und Datenstrukturen Wintersemester 2003 / 2004 Name:... Vorname:...

Mehr

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell): Was bisher geschah deklarative Programmierung funktional: Programm: Menge von Termgleichungen, Term Auswertung: Pattern matsching, Termumformungen logisch: Programm: Menge von Regeln (Horn-Formeln), Formel

Mehr

Einführung in (Binäre) Bäume

Einführung in (Binäre) Bäume edeutung und Ziele inführung in (inäre) äume Marc Rennhard http://www.tik.ee.ethz.ch/~rennhard rennhard@tik.ee.ethz.ch äume gehören ganz allgemein zu den wichtigsten in der Informatik auftretenden atenstrukturen,

Mehr

Binäre Suchbäume. Ein Leitprogramm von Timur Erdag und Björn Steffen

Binäre Suchbäume. Ein Leitprogramm von Timur Erdag und Björn Steffen Binäre Suchbäume Ein Leitprogramm von Timur Erdag und Björn Steffen Inhalt: Bäume gehören zu den bedeutendsten Datenstrukturen in der Informatik. Dieses Leitprogramm gibt eine Einführung in dieses Thema

Mehr

Unterrichtsvorhaben Q2- I:

Unterrichtsvorhaben Q2- I: Schulinterner Lehrplan Informatik Sekundarstufe II Q2 III. Qualifikationsphase Q2 Unterrichtsvorhaben Q2- I: Im ersten Halbjahr 1 Klausur, im 2. Halbjahr ein Projekt. Die Länge der Klausur beträgt 90 min.

Mehr

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008 PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik

Mehr

Programmierung und Modellierung

Programmierung und Modellierung Programmierung und Modellierung Terme, Suchbäume und Pattern Matching Martin Wirsing in Zusammenarbeit mit Moritz Hammer SS 2009 2 Inhalt Kap. 7 Benutzerdefinierte Datentypen 7. Binärer Suchbaum 8. Anwendung:

Mehr

HEUTE. Effizienzbeispiel: bekannte Version (Übung 04.11.04) Mathematik: Was ist Effizienz? vollständige Induktion

HEUTE. Effizienzbeispiel: bekannte Version (Übung 04.11.04) Mathematik: Was ist Effizienz? vollständige Induktion 17.11.04 1 HEUTE 17.11.04 3 Effizienzbeispiel: bekannte Version (Übung 04.11.04) Mathematik: was ist Effizienz? vollständige Induktion JAVA: Arrays die for -Schleife die Sprunganweisungen break und continue

Mehr

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Klausur zur Einführung in die objektorientierte Programmierung mit Java Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-

Mehr

HTTP://WWW.WIKIPAINTINGS.ORG/EN/FRIEDENSREICH-HUNDERTWASSER/YOU-ARE-A-GUEST-OF-NATURE-BEHAVE Abstrakte Datentypen.

HTTP://WWW.WIKIPAINTINGS.ORG/EN/FRIEDENSREICH-HUNDERTWASSER/YOU-ARE-A-GUEST-OF-NATURE-BEHAVE Abstrakte Datentypen. HTTP://WWW.WIKIPAINTINGS.ORG/EN/FRIEDENSREICH-HUNDERTWASSER/YOU-ARE-A-GUEST-OF-NATURE-BEHAVE Abstrakte Datentypen OOPM, Ralf Lämmel (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 562 Motivation abstrakter

Mehr

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen 9.2.5 HUT 9.2.5 3 atenstrukturen im omputer atenstrukturen ie beiden fundamentalen atenstrukturen in der Praxis sind rray und Liste Rekursion Feedback valuation rray Zugriff: schnell Umordnung: langsam

Mehr

Beispielblatt 2 186.813 VU Algorithmen und Datenstrukturen 1 VU 6.0

Beispielblatt 2 186.813 VU Algorithmen und Datenstrukturen 1 VU 6.0 Beispielblatt 2 186.813 VU Algorithmen und Datenstrukturen 1 VU 6.0 25. September 2013 Aufgabe 1 Gegeben sei ein binärer Suchbaum mit Werten im Bereich von 1 bis 1001. In diesem Baum wird nach der Zahl

Mehr

Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel

Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel FB Physikalische Technik Musterlösungen Teil 4 Aufgabe 1 package teil4; import javax.swing.*; public class Ei { int haltung, ident; String

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

Tutoren Simon Andermatt Lukas Beck. Alexis Peter Thomas Ritter

Tutoren Simon Andermatt Lukas Beck. Alexis Peter Thomas Ritter UNIVERSITÄT BASEL Dozent Prof. Dr. Thomas Vetter Departement Informatik Assistenten Brian Amberg Andreas Forster Tutoren Simon Andermatt Lukas Beck Webseite http://informatik.unibas.ch/lehre/hs10/cs101/index.html

Mehr

Test-Driven Design: Ein einfaches Beispiel

Test-Driven Design: Ein einfaches Beispiel Test-Driven Design: Ein einfaches Beispiel Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 2 Ziele Veranschaulichung der Technik des Test-Driven Design am Beispiel eines Programms

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

RWTH Aachen, Lehrstuhl für Informatik IX Kapitel 3: Suchen in Mengen - Datenstrukturen und Algorithmen - 51

RWTH Aachen, Lehrstuhl für Informatik IX Kapitel 3: Suchen in Mengen - Datenstrukturen und Algorithmen - 51 RWTH Aacen, Lerstul für Informatik IX Kapitel 3: Sucen in Mengen - Datenstrukturen und Algoritmen - 51 Sucbäume Biser betractete Algoritmen für Suce in Mengen Sortierte Arrays A B C D - Nur sinnvoll für

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen Grundlagen der Programmierung Prof. H. Mössenböck 10. Klassen Motivation Wie würde man ein Datum speichern (z.b. 13. November 2004)? 3 Variablen int da; String month; int ear; Unbequem, wenn man mehrere

Mehr

Java - Programmierung - Objektorientierte Programmierung 1

Java - Programmierung - Objektorientierte Programmierung 1 Java - Programmierung - Objektorientierte Programmierung 1 // Klassen und Objekte public class KlaObj public static void main(string args []) Klasse1 a; a = new Klasse1("heute", 47); Klasse1 b = new Klasse1

Mehr

Grundlagen der Programmierung 2. Bäume

Grundlagen der Programmierung 2. Bäume Grundlagen der Programmierung 2 Bäume Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 24. Mai 2006 Graphen Graph: Menge von Knoten undzugehörige (gerichtete oder ungerichtete)

Mehr

Nachtrag zu binären Suchbäumen

Nachtrag zu binären Suchbäumen Nachtrag zu binären Suchbäumen (nicht notwendigerweise zu AVL Bäumen) Löschen 1 3 2 10 4 12 1. Fall: Der zu löschende Knoten ist ein Blatt: einfach löschen 2. Fall: Der zu löschende Knoten hat ein Nachfolgeelement

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

1. Der Einstieg in Java

1. Der Einstieg in Java 1. Der Einstieg in Java Was heißt Programmieren? 1. Der Einstieg in Java Lernziele: Am Ende dieses Kapitels sollen Sie wissen, aus welchen Bestandteilen ein Java-Programm besteht, Java-Programme übersetzen

Mehr

5.6 Vererbung. Vererbung

5.6 Vererbung. Vererbung 5.6 Vererbung Klassen können zueinander in einer "ist ein"- Beziehung stehen Beispiel: Jeder PKW ist ein Kraftfahrzeug, jedes Kraftfahrzeug ist ein Transportmittel aber: auch jeder LKW ist ein Kraftfahrzeug

Mehr

Balancierte Bäume. Martin Wirsing. in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer. http://www.pst.ifi.lmu.de/lehre/ss06/infoii/ SS 06

Balancierte Bäume. Martin Wirsing. in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer. http://www.pst.ifi.lmu.de/lehre/ss06/infoii/ SS 06 Balancierte Bäume Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer http://www.pst.ifi.lmu.de/lehre/ss06/infoii/ SS 06 2 Ziele AVL-Bäume als einen wichtigen Vertreter balancierter

Mehr

Algorithmen und Datenstrukturen Balancierte Suchbäume

Algorithmen und Datenstrukturen Balancierte Suchbäume Algorithmen und Datenstrukturen Balancierte Suchbäume Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Überblick Einführung Einfügen und Löschen Einfügen

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Client-Server-Beziehungen

Client-Server-Beziehungen Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server

Mehr

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN RALF HINZE Institut für Informatik III Universität Bonn Email: ralf@informatik.uni-bonn.de Homepage: http://www.informatik.uni-bonn.de/~ralf Februar, 2001 Binäre Suchbäume

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen 1 Kapitel 7 Ziele 2 (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen Benutzung von Vererbung zur Erstellung individueller GUI-Klassen durch Erweiterung

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Java Schulung (Java 2 Java Development Kit 5 / 6)

Java Schulung (Java 2 Java Development Kit 5 / 6) 2. Grundlagen der Objektorientierung 2.1 Klassen, Attribute, Methoden Klassen Eine Klasse beschreibt als Bauplan Gemeinsamkeiten einer Menge von Objekten ist also ein Modell, auf dessen Basis Objekte erstellt

Mehr

5. Threads, Serverprozesse und Benachrichtigungen

5. Threads, Serverprozesse und Benachrichtigungen 5. Threads, Serverprozesse und Benachrichtigungen Threads allgemein Threads in Android: Handler und Messages Services: Local, Remote, Binding Benachrichtigungen Entwicklung mobiler Anwendungen Europäische

Mehr

Überblick. Lineares Suchen

Überblick. Lineares Suchen Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz

Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz Datenstruktur BDD 1986 von R. Bryant vorgeschlagen zur Darstellung von aussagenlogischen Formeln (genauer: Booleschen Funktionen)

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

3 Implementieren von Bäumen 5 3.1 Feldbäume... 5 3.2 Sequentielle Verfahren... 5 3.3 Dynamische Struktur... 6

3 Implementieren von Bäumen 5 3.1 Feldbäume... 5 3.2 Sequentielle Verfahren... 5 3.3 Dynamische Struktur... 6 Kompaktübersicht Bäume Diese Übersicht entstand im Wintersemester 2003/04 parallel zur Vorlesung Grundzüge der Informatik III an der Technischen Universität Darmstadt (TUD) und soll die behandelten Aspekte

Mehr

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Informatik I 2 Übung 9 Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Quellcode Strukturieren Wenn alle Funktionen in einer Datei zusammengefasst sind wird es schnell unübersichtlich Mehrere

Mehr

Eine zu Grunde liegende Typdefinition beschreibt eine Struktur, die alle erlaubten Instanzen dieses Typs gemeinsam haben.

Eine zu Grunde liegende Typdefinition beschreibt eine Struktur, die alle erlaubten Instanzen dieses Typs gemeinsam haben. Der binäre Baum Tree Die geläufigste Datenstuktur ist der binäre Baum Tree. Dieses Beispielskript zeigt im direkten Vergleich zu anderen Sprachen den Umgang mit formalen Typparametern in CHELSEA. Wir steigen

Mehr

Arrays Fortgeschrittene Verwendung

Arrays Fortgeschrittene Verwendung Arrays Fortgeschrittene Verwendung Gilbert Beyer und Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Arrays: Wiederholung

Mehr

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum Starthilfe für C# Inhaltsverzeichnis Allgemeines... 2 Bezugsquellen... 2 SharpDevelop... 2.NET Runtime... 2.NET SDK... 2 Installation... 2 Reihenfolge... 2 Vorschlag für eine Ordnerstruktur... 3 Arbeit

Mehr

Herbst. Erste Staatsprüfung für ein Lehramt an öffentlichen Schulen. Prüfungsteilnehmer prüfungstermin Einzelprüfungsnummei. - Prüfungsaufgaben -

Herbst. Erste Staatsprüfung für ein Lehramt an öffentlichen Schulen. Prüfungsteilnehmer prüfungstermin Einzelprüfungsnummei. - Prüfungsaufgaben - Prüfungsteilnehmer prüfungstermin Einzelprüfungsnummei Kennzahl: Kennwort: Arbeitsplatz-Nr.: Herbst 2000 46114 Erste Staatsprüfung für ein Lehramt an öffentlichen Schulen - Prüfungsaufgaben - Fach: Einzelprüfung:

Mehr

DATENSTRUKTUREN UND ZAHLENSYSTEME

DATENSTRUKTUREN UND ZAHLENSYSTEME DATENSTRUKTUREN UND ZAHLENSYSTEME RALF HINZE Institute of Information and Computing Sciences Utrecht University Email: ralf@cs.uu.nl Homepage: http://www.cs.uu.nl/~ralf/ March, 2001 (Die Folien finden

Mehr

Rekursion. Was heißt "rekursiv" Page 1. Eine Methode m() heißt rekursiv, wenn sie sich selbst aufruft. Beispiel: Berechnung der Fakultät (n!

Rekursion. Was heißt rekursiv Page 1. Eine Methode m() heißt rekursiv, wenn sie sich selbst aufruft. Beispiel: Berechnung der Fakultät (n! Rekursion Was heißt "rekursiv" Eine Methode m() heißt rekursiv, wenn sie sich selbst aufruft m() { m(); direkt rekursiv m() { n() { m(); indirekt rekursiv Beispiel: Berechnung der Fakultät (n!) n! = 1

Mehr

Bachelor-Klausur im WiSe 2013 / 2014. Grundlagen der Informatik

Bachelor-Klausur im WiSe 2013 / 2014. Grundlagen der Informatik Fachhochschule Kaiserslautern FB Informatik und Mikrosystemtechnik Prof. Dr. M. Duque-Antón Bachelor-Klausur im WiSe 2013 / 2014 im Fach Grundlagen der Informatik Angewandte Informatik / Medieninformatik

Mehr

Speicherstrukturen. Aufgabe 1-1: Fragen zu FAT (File Allocation Table) Aufgabe 1-2: Datensätze variabler Länge. Kind.java:

Speicherstrukturen. Aufgabe 1-1: Fragen zu FAT (File Allocation Table) Aufgabe 1-2: Datensätze variabler Länge. Kind.java: Institut für Datenbanken und Informationssysteme Prof. Dr. M. Reichert, M. Predeschly, J. Kolb Lösung für Übungsblatt 1 Aufgabe 1-1: Fragen zu FAT (File Allocation Table) 1. Im Bootsektor der Festplatte

Mehr

Suchen in Listen und Hashtabellen

Suchen in Listen und Hashtabellen Kapitel 12: Suchen in Listen und Hashtabellen Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht Einleitung Lineare Suche Binäre Suche (in sortierten Listen) Hashverfahren

Mehr

Selbststudium OOP5 21.10.2011 Programmieren 1 - H1103 Felix Rohrer

Selbststudium OOP5 21.10.2011 Programmieren 1 - H1103 Felix Rohrer Kapitel 4.1 bis 4.3 1. zu bearbeitende Aufgaben: 4.1 4.1: done 2. Was verstehen Sie unter einem "Java-Package"? Erweiterungen verschiedener Klassen welche in Java benutzt werden können. 3. Sie möchten

Mehr

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr