FH-Hof Sortieren mit Binären Bäumen Richard Göbel.

Slides:



Advertisements
Ähnliche Präsentationen
Vorbereitung: struct knoten { int x; struct knoten *l, *r; } *b, *bh, **bp; b: Zeiger auf Wurzel bh: Hilfszeiger bp: Zeiger auf Zeiger auf knoten b bp.
Advertisements

Klassen - Verkettete Liste -
Suchbäume unterstützen alle unten angegebenen Operationen für dynamische Mengen K effizient: Search(K ,k) ---- Suche ein Element x von K mit Schlüssel.
Der k-d-Baum Richard Göbel.
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
Kapitel 9: Graphdurchlauf
Hochschule Fulda – FB ET Sommersemester 2010
FH-Hof Der B-Baum Richard Göbel. FH-Hof Wahl des Verzweigungsgrad Verzweigungsgrad kann größer als 2 sein v Nachfolger für einen Knoten v-1 Werte in einem.
Design by Contract with JML - Teil 2
Binäre Bäume Richard Göbel.
Sortieren mit Binären Bäumen
Sortierverfahren Richard Göbel.
FH-Hof Reversi: Erweiterungen für den AutoClient Richard Göbel.
Listen Richard Göbel.
Sortierverfahren Richard Göbel.
FH-Hof Servlets Richard Göbel. FH-Hof Konzept Servlets werden auf der Server-Seite durch ein Formular aufgerufen werten die Eingaben aus einem Formular.
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
FH-Hof Animation - Teil 1 Richard Göbel. FH-Hof Themen Darstellung der Geometrie ändern (Transformation, Appearance, etc.) Geometrie ändern (Morphing)
FH-Hof SQLJ Richard Göbel. FH-Hof SQLJ - Idee Erweiterung von Java um SQL Die Verwendung von SQL-Anweisungen innerhalb einer Programmiersprache wird vereinfacht.
JTree Richard Göbel.
Baumstrukturen Richard Göbel.
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (13 – Offenes Hashing) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 - Bäume: Durchlaufreihenfolgen, Analyse nat. Bäume) Prof. Th. Ottmann.
Priority search queues: Loser trees Advanced Algorithms & Data Structures Lecture Theme 06 Tobias Lauer Summer Semester 2006.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (07 - Skiplisten) Prof. Th. Ottmann.
WS03/041 Binomial Queues Prof. Dr. S. Albers Prof.Dr.Th Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Diskrete Mathematik I Vorlesung 6 Binärer Suchbaum II.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
Planung einfache Dateibehandlung (externe Dateien, Öffnen, Lesen/Schreiben, Schließen). Diskussion des Problems, die Wörter in einem gegebenen Text.
Informatikunterricht mit Java
Kapitel 2: Datenstrukturen
Kapitel 10: Graphalgorithmen
Rekursion Richard Göbel.
Template Pattern Richard Göbel.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Rekursive Funktionen (Fakultät)
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Abteilung für Telekooperation Übung Softwareentwicklung 2 für Wirtschaftsinformatik Dr. Wieland Schwinger
Algorithmen und Datenstrukturen Übungsmodul 6
Vorlesung Binärer Suchbaum II-
Programmieren in C Dynamische Listen / Bäume
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Thomas Hilpold: Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger.
1 Helmut Schauer Educational Engineering Lab Department for Informatics University of Zurich Algorithmen und Datenstrukturen FS 2008 BBäume.
Kapitel 6: Suchbäume und weitere Sortierverfahren
Kapitel 6: Suchbäume und weitere Sortierverfahren
AVL-Trees (according to Adelson-Velskii & Landis, 1962) In normal search trees, the complexity of find, insert and delete operations in search.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
9.3 Suchbäume = Repräsentation linear geordneter Mengen durch Bäume (applikativ) bzw. baumartige Geflechte (imperativ) Garantierte Komplexität ist durchweg.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Algorithmen und Datenstrukturen 1 SS 2002
Binärer Suchbaum IV AVL-Baum I
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Binärer Suchbaum III- -AVL-Baum-
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Binärer Suchbaum I-
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
1 // Verkettete Liste 2 // demonstriert verkettete Listen und // Rekursion // (Einfügen am "Fuß") // #include struct Liste { int Element; Liste *weiter;
Praktische Informatik 1
Heapsort-Algorithmus
 Präsentation transkript:

FH-Hof Sortieren mit Binären Bäumen Richard Göbel

FH-Hof Sortierte Binäre Bäume Jeder Knoten hat höchsten zwei Nachfolger Alle Knoten im linken Teilbaum sind kleiner (oder gleich) als die Wurzel Alle Knoten im rechten Teilbaum sind größer (oder gleich) als die Wurzel

FH-Hof Binärer Baum: Definition eines Knotens type Node { private int value; private Node left; private Node right; }

FH-Hof Binärer Baum: Ausgabe der Knoten void print(Node n, int depth) { for (int i = 0; i < depth; i++) { print(" "); } if (n == null) { println(" "); } else { println("Value: " + n.value); print(n.left, depth+1); print(n.right, depth+1);} } void print(Node root) { print(root, 0); }

FH-Hof Binärer Baum: Suche nach Werten Node search(Node n, int v) { if (v == n.value) return this; if (v < n.value) { if (n.left == null) { return null; } else { return search(n.left,v); } } else { // v > n.value if (n.right == null) { return null; } else { return search(right.n,v);} }}

FH-Hof Binärer Baum: Einfügen von Werten void insert(Node n, int v) { if (v == n.value) { // hier neuen Eintrag hinzufuegen } else if (v < n.value) { if (n.left == null) { n.left = new Node(v); } else { insert(n.left, v); }} else { // v > n.value if (n.right == null) { n.right = new Node(newValue); } else { insert(n.right,v);}} }

FH-Hof Binärer Baum: Löschen eines Knotens - Fälle Knoten ohne Nachfolger Knoten mit einem Nachfolger Knoten mit zwei Nachfolgern

FH-Hof Binärer Baum: Löschen eines Knotens - Code I Node delete(Node n, int v) { if (v == n.value) { if (n.left == null) return right; if (n.right == null) return left; if (n.right.left == null) { n.value = n.right.value; n.right = n.right.right; return n; } else { value = deleteMin(right); return n; }...

FH-Hof Binärer Baum: Löschen eines Knotens - Code II... if (v < n.value) { if (n.left != null) { n.left = delete(n.left,v); } return n; } else { // oldValue > value if (n.right != null) { n.right = delete(n.right,v); } return n; }

FH-Hof Binärer Baum: Löschen eines Knotens - Code III Node deleteMin(Node n) { // Bitte selbst implementieren! }

FH-Hof Binärer Baum – Kapselung Datentyp für den Einstieg type BinTree { Node content = null; int size = 0; } Entsprechende Funktionen definieren Node search(BinTree t, int v) … void insert(BinTree t, int v) … void delete(BinTree t, int v) … print(BinTree t) … Datentyp "Node" ist nur lokal wichtig

FH-Hof Binärer Baum - Weitere Dienstleistungen Sortierte Ausgabe aller Einträge Sortierte Ausgabe aller Einträge größer (kleiner) als ein vorgegebener Wert Sortierte Ausgabe aller Einträge zwischen zwei Werten

FH-Hof Binärer Baum - Sortierte Ausgabe aller Einträge void printAll(Node root) { if (root.left != null) { printAll(root.left); } println(root.value); if (root.right != null) { printAll(root.right); }

FH-Hof Binärer Baum - Einträge größer als ein Wert void printAbove(Node root, int min) { if (root.value < min) { if (root.right != null) { printAbove(root.right, min); } else { if (root.left != null) { printAbove(root.left, min); } println(root.value); if (root.right != null) { printAll(root.right); } }}

FH-Hof Binärer Baum - Einträge in einem Bereich I void printBetween(Node root, int min,int max) { if (root.value < min) { if (root.right != null) { printBetween(root.right, min, max); } else if (root.value > max) { if (root.left != null) { printBetween(root.left, min, max); }...

FH-Hof Binärer Baum - Einträge in einem Bereich II... else { if (root.left != null) { printAbove(root.left, min); } println(root.value); if (root.right != null) { printBelow(root.right, max); }

FH-Hof Problem - Bäume mit langen Ästen

FH-Hof Lösung: (fast) balancierte Bäume Höhendifferenz des linken und rechten Teilbaums für jeden Knoten ist maximal k (k in der Regel 1) Beispiele: Rot-Schwarz-Baum AVL-Baum (G. M. Adel'son-Vel'skii und Y. M. Landis) Idee: Lokale Reorganisation des Baumes möglich

FH-Hof Lokale Transformation eines binären Baumes X Y A BC X Y AB C

FH-Hof Transformationen des AVL-Baumes - Teil1

FH-Hof Transformationen des AVL-Baumes - Teil 2