Sortieren mit Binären Bäumen

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
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.
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
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.
Binäre Bäume Richard Göbel.
Java: Objektorientierte Programmierung
Sortierverfahren Richard Göbel.
Java: Dynamische Datentypen
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.
Indirekte Adressierung
Motivation Richard Göbel.
Effizienz: Indexstrukturen
Java: Referenzen und Zeichenketten
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.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (13 – Offenes Hashing) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 - Bäume: Durchlaufreihenfolgen, Analyse nat. Bäume) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (07 - Skiplisten) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
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,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Informatikunterricht mit Java
Kapitel 2: Datenstrukturen
FH-Hof Sortieren mit Binären Bäumen Richard Göbel.
Rekursion Richard Göbel.
Template Pattern Richard Göbel.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Einfach verkettete Listen (OOP)
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
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke.
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.
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 (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Vorlesung Binärer Suchbaum II-
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Thomas Hilpold: Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger.
Kapitel 6: Suchbäume und weitere Sortierverfahren
SWE1 / Übung 10 ( ) Rekursion Binärbäume.
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-
Binärer Baum, Binärer Suchbaum I
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.
Binärbäume.
Heapsort-Algorithmus
 Präsentation transkript:

Sortieren mit Binären Bäumen Richard Göbel

Speichere alle Studierenden Beantworte folgende Anfragen Beispielanwendung Speichere alle Studierenden Beantworte folgende Anfragen Student/Studentin mit gegebener Matrikelnummer finden Studierende im 4. Semester finden Studierende zwischen 3. und. 6. Semester finden

Klassendefinition für Student public class Student extends Person { static ArrayList<Person> studenten; int matrikelnummer; Vorlesung[] vorlesungen int anzVorlesungen; int semester, static studenten = new ArrayList<Person>(); } Student ( … ) studenten.add(this); …

Suchfunktionen public class Student extends Person { … static Student search(int matrikel) } static Student search(int semester) static Student search(int minSem, int maxSem)

Analyse des Zeitaufwands Suchen bei unsortierter Liste sortierter Liste Sortierkriterium? Aufwand für weitere Operationen bei sortierten Listen Einfügen Ändern Löschen Hilft die Datenstruktur LinkedList? Alternative Datenstruktur: Bäume

Sortierte Binäre Bäume Jeder Knoten hat höchsten zwei Nachfolger Alle Knoten im linken Teilbaum sind kleiner als die Wurzel Alle Knoten im rechten Teilbaum sind größer als die Wurzel Gleiche Elemente?

Binärer Baum: Definition eines Knotens class Node { int value; Node left = null; Node right = null; }

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

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

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

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

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

Implementierung von deleteMin? int deleteMin(Node n) { . . . }

Binärer Baum – Kapselung Klasse für den Einstieg class BinTree { Node content = null; int size = 0; } Entsprechende Funktionen definieren Node search(int v) … void insert(int v) … void delete(int v) … Klasse "Node" ist nur lokal wichtig

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

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

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

Binärer Baum - Einträge in einem Bereich I void printBetween(int min,int max) { if (value < min) // nur rechts suchen if (right != null) right.printBetween(min,max); } else if (value > max) // nur links suchen if (left != null) left.printBetween(min, max); else // value zwischen min und max if (left != null) left.printAbove(min); println(root.value); if (right != null) right.printBelow(max);

Problem - Bäume mit langen Ästen

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

Lokale Transformation eines binären Baumes X Y A B C X Y A B C

Transformationen des AVL-Baumes - Teil1

Transformationen des AVL-Baumes - Teil 2