Binärbäume Klaus Becker 2003.

Slides:



Advertisements
Ähnliche Präsentationen
Anzahl der ausgefüllten und eingesandten Fragebögen: 211
Advertisements

Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Claudio Moraga; Gisbert Dittrich
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Erkennen Sie die Kirchenkreise Heiteres Ratespiel Kirchen aus der Region.
Telefonnummer.
Durchlaufen eines Binärbaumes
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2012.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
1 JIM-Studie 2010 Jugend, Information, (Multi-)Media Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
= = = = 47 = 47 = 48 = =
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Rechneraufbau & Rechnerstrukturen, Folie 2.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 2.
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 9 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Differentielles Paar UIN rds gm UIN
Prof. Dr. Bernhard Wasmayr
Studienverlauf im Ausländerstudium
Schieferdeckarten Dach.ppt
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Prof. Dr. Bernhard Wasmayr VWL 2. Semester
AWA 2007 Natur und Umwelt Natürlich Leben
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
1. 2 Schreibprojekt Zeitung 3 Überblick 1. Vorstellung ComputerLernWerkstatt 2. Schreibprojekt: Zeitung 2.1 Konzeption des Kurses 2.2 Projektverlauf.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
20:00.
„Küsse deine Freunde“ – FlexKom-App teilen
Zusatzfolien zu B-Bäumen
In der Schule.
Eine Einführung in die CD-ROM
Listen Klaus Becker KB Listen 2 Listen Ansgar A., Speyer Claudia B., Koblenz Knut B., Neustadt Annett B., Wörrstadt Stefani D., Bad Ems Jochen F.,
für Weihnachten oder als Tischdekoration für das ganze Jahr
Syntaxanalyse Bottom-Up und LR(0)
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Konzepte der objektorientierten Programmierung
NEU! 1 2. Wo kommt diese Art von Rezeptor im Körper vor?
Binäre Bäume Louis Moret und Reto Huber, 5. 11
PROCAM Score Alter (Jahre)
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Geometrische Aufgaben
Symmetrische Blockchiffren DES – der Data Encryption Standard
Graphen und Bäume.
1 Alle wollen glücklich sein Unterm warmen Sonnenschein!
Retuschen.ppt Die folgende Schau zeigt die Möglichkeiten, mit PhotoDraw Digitalbilder zu retuschieren. Vergleichen Sie jeweils zwei Bildpaare durch fleissiges.
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Zahlentheorie und Zahlenspiele Hartmut Menzer, Ingo Althöfer ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Gruppe: 31 Grundlagen wissenschaftlichen Arbeitens Algorithmen und Datenstrukturen Iris Studeny.
SWE1 / Übung 10 ( ) Rekursion Binärbäume.
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Folie Beispiel für eine Einzelauswertung der Gemeindedaten (fiktive Daten)
Unternehmensbewertung Thomas Hering ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List of Figures Tabellenübersicht.
Es war einmal ein Haus
Folie Einzelauswertung der Gemeindedaten
J-Team: Gymnasium Ulricianum Aurich und MTV Aurich Ein Projekt im Rahmen von UlricianumBewegt.de Euro haben wir schon…  8000 mal habt ihr bereits.
Datum:17. Dezember 2014 Thema:IFRS Update zum Jahresende – die Neuerungen im Überblick Referent:Eberhard Grötzner, EMA ® Anlass:12. Arbeitskreis Internationale.
1 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt Wie.
Sehen, Hören, Schmecken: wenn uns unsere Sinne täuschen
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
Binärbäume.
 Präsentation transkript:

Binärbäume Klaus Becker 2003

Datenstrukturierung mit Bäumen Löwe; 12 Esel; 4 Pfau; 27 Esel; 9 Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 Gorilla; 23

Teil 1 Termbäume

Termbaum Ein Termbaum dient dazu, einen Rechenterm wie z. B. (x+3)*(2x-5) strukturell zu repräsentieren. * + x 3 2 – 5 Ziel: Entwicklung eines Programms zur Verarbeitung von Term(bäum)en.

Binärbaum Wurzel * + – x 3 * 5 linker Teilbaum 2 x rechter Teilbaum Ein Binärbaum ist leer oder besteht aus einer Wurzel und zwei Binärbäumen, dem linken und rechten Teilbaum.

Objektorientierte Modellierung inhalt = * links rechts inhalt = + inhalt = – links rechts links rechts inhalt = x inhalt = 3 inhalt = * inhalt = 5 links rechts links rechts links rechts links rechts inhalt = 2 inhalt = x links rechts links rechts

Objektorientierte Modellierung * + – x 3 * 5

OOA-Modell 0..1 0..2 kennt kennt Baum Knoten wurzel: Knoten inhalt: ... links: Knoten rechts: Knoten kennt ... ...

OOD-Modell 0..2 0..1 kennt kennt ist Baum Knoten - wurzel: Knoten - inhalt: string - links: Knoten - rechts: Knoten kennt + create(w: Knoten) + getWurzel: Knoten + istLeer: boolean + ausgebenInOrder(k: Knoten): string + ausgebenPreOrder(k: Knoten): string + ausgebenPostOrder(k: Knoten): string + create(i: string; l,r: Knoten) + getInhalt: string + getLinks: Knoten + getRechts: Knoten ist TermBaum + auswerten(k: Knoten; w: integer): integer

Implementierung constructor TKnoten.create(inhalt: string; links, rechts: TKnoten); begin self.inhalt := inhalt; self.links := links; self.rechts := rechts end; function TKnoten.getInhalt: string; begin result := inhalt; end; function TKnoten.getLinks: TKnoten; begin result := links; end; function TKnoten.getRechts: TKnoten; begin result := rechts; end;

Implementierung constructor TBaum.create(w: TKnoten); begin wurzel := w; end; function TBaum.istLeer: boolean; begin result := (wurzel = nil); end; function TBaum.getWurzel: TKnoten; begin result := wurzel; end; procedure TBaum.setWurzel(k: TKnoten); begin wurzel := k; end;

Erzeugung des Termbaums Aufgabe: Ein Binärbaum (wie der hier dargestellte) soll mit Hilfe der bisher implementierten Baumoperationen erzeugt werden. * + x 3 2 – 5

Erzeugung des Termbaums – Version 1 k1 := TKnoten.create('2', nil, nil); k2 := TKnoten.create('x', nil, nil); k3 := TKnoten.create('*', k1, k2); k4 := TKnoten.create('5', nil, nil); k5 := TKnoten.create('-', k3, k4); k6 := TKnoten.create('x', nil, nil); k7 := TKnoten.create('3', nil, nil); k8 := TKnoten.create('+', k6, k7); k9 := TKnoten.create('*', k8, k5); baum := TTermBaum.create(k9); * + x 3 2 – 5

Erzeugung des Termbaums – Version 2 baum := TTermBaum.create( TKnoten.create('*', TKnoten.create('+', TKnoten.create('x', nil, nil), TKnoten.create('3', nil, nil)), TKnoten.create('-', TKnoten.create('*', TKnoten.create('2', nil, nil), TKnoten.create('x', nil, nil)), TKnoten.create('5', nil, nil)))); * + x 3 2 – 5

Traversierung eines Binärbaums Aufgabe: Ein Binärbaum (wie der hier dargestellte) soll nach einer vorgegeben Regel durchlaufen und verarbeitet (z. B. ausgegeben) werden. * + – x 3 * 5 2 x

Preorder-Traversierung eines Binärbaums * + – x 3 * 5 2 x Verarbeite die Wurzel Traversiere den linken Teilbaum in „Preorder“ Traversiere den rechten Teilbaum in „Preorder“ * + x 3 - * 2 x 5

Inorder-Traversierung eines Binärbaums * + – x 3 * 5 2 x Traversiere den linken Teilbaum in „Inorder“ Verarbeite die Wurzel Traversiere den rechten Teilbaum in „Inorder“ x + 3 * 2 * x - 5

Postorder-Traversierung eines Binärbaums * + – x 3 * 5 2 x Traversiere den linken Teilbaum in „Postorder“ Traversiere den rechten Teilbaum in „Postorder“ Verarbeite die Wurzel x 3 + 2 x * 5 - *

Preorder-Ausgabe Deklaration: function TBaum.ausgebenPreOrder(k:TKnoten):String; begin if (k = nil) then result := '' else result := k.getInhalt + ausgebenPreOrder(k.getLinks) + ausgebenPreOrder(k.getRechts); end; Aufruf: baum.ausgebenPreOrder(baum.getWurzel)

Aufgabe Im Ordner „Termbaum1“ finden Sie ein vorstrukturiertes Programm zur Erzeugung und Verarbeitung von Binärbäumen / Termbäumen. Ergänzen Sie die fehlenden Teile (Erzeugung eines Binärbaums und Ausgabe in Preorder, Inorder, Postorder). Zur Kontrolle: Termbaum2

Auswertung eines Termbaums Aufgabe: Ein Termbaum (wie der hier dargestellte) soll bzgl. eines vorgegeben x-Wertes ausgewertet werden: x-Wert einsetzen und Gesamtwert berechnen * + x 3 2 – 5 x = 3: Auswertung liefert 6

Rekursive Problemreduktion baum.auswerten(k,w) if k.getInhalt = '*' then result := * + – x 3 * 5 2 x baum.auswerten(k.links,w) baum.auswerten(k.rechts,w) *

Rekursionsanfang baum.auswerten(k,w) if ((k.getRechts = nil) and (k.getLinks = nil)) then x 3 if k.getInhalt = 'x' then result := w else result := StrToInt(k.getInhalt);

Aufgabe Implementieren Sie die Operation „auswerten“ und ergänzen Sie das Testprogramm. Zur Kontrolle: Termbaum2

Teil 2 Suchbäume

Textindex Die #Geschichte# des Kölner Zoos #Gründung# des Zoo und die ersten Jahre Auf Betreiben von Dr. Caspar #Garthe#, dem ersten Oberlehrer an der Höheren Bürgerschule am Quatermarkt zu Köln, schlossen sich wohlhabende und einflußreiche, zugleich tierliebende und zoobegeisterte Bürger der Stadt zu einer Aktiengesellschaft zusammen, um 1860 in Köln einen #Zoologischen Garten# zu gründen. In kaum einem anderen Zoo läßt sich die #Entwicklung# der Zoologischen Gärten anhand noch erhaltener #Tierhäuser und -anlagen# aus den verschiedenen #Epochen# so gut nachvollziehen wie im Kölner Zoo. Das älteste Monument ist das 1863 unter Leitung von Dr. Heinrich #Bodinus# (1859-1869) erbaute #Elefantenhaus# in #maurischem Stil#. ... Affeninsel; 33 Blockhaus-Stil; 20 Bodinus; 16 Elefantenhaus; 79 Elefantenhaus; 17 Entwicklung; 11 Epochen; 14 Funck; 19 Garthe; 4 Geschichte; 1 Gründung; 2 Hagenbeck; 28 ... Ziel: Es soll ein Programm entwickelt werden, mit dessen Hilfe ein Textindex erstellt und zum „Nachschlagen“ benutzt werden kann. Im vorliegenden Fall soll der Textindex die Zeilen-nummern der markierten Begriffe enthalten.

Prototyp

Zur Wahl der Datenstruktur Affe; 24 Esel; 9 Esel; 4 Giraffe; 6 Gorilla; 23 Jaguar; 8 Liste  Lineare Suche Löwe; 12 Esel; 4 Pfau; 27 Esel; 9 Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 Gorilla; 23 Binärbaum  Binäre Suche

Suchbaum alle  Wurzel alle > Wurzel Löwe; 12 Esel; 4 Pfau; 27 Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 Gorilla; 23 alle  Wurzel alle > Wurzel

Suchbaum alle  Wurzel alle > Wurzel Löwe; 12 Esel; 4 Pfau; 27 Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 Gorilla; 23 alle  Wurzel alle > Wurzel

Einfügen: Problemspezifikation Ausgangszustand: Fasan; 13 Löwe; 12 Esel; 4 Pfau; 27 Esel; 9 Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 Zielzustand: Fasan; 13 Gorilla; 23

Einfügen: Lösungsstrategie Situation: aktueller Wurzelknoten existiert neuer Begriff  aktueller Begriff linker Teilbaum nicht leer Fasan; 13 neu: Löwe; 12 aktuell: Esel; 4 Pfau; 27 Esel; 9 Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 Gorilla; 23

Einfügen: Lösungsstrategie Problemreduktion: Einfügen im linken Teilbaum Fasan; 13 neu: Löwe; 12 aktuell: Esel; 4 Pfau; 27 Esel; 9 Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 Gorilla; 23

Einfügen: Lösungsstrategie Situation: aktueller Wurzelknoten existiert neuer Begriff > aktueller Begriff rechter Teilbaum nicht leer Fasan; 13 neu: Löwe; 12 aktuell: Esel; 4 Pfau; 27 Esel; 9 Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 Gorilla; 23

Einfügen: Lösungsstrategie Problemreduktion: Einfügen im rechten Teilbaum Fasan; 13 neu: Löwe; 12 aktuell: Esel; 4 Pfau; 27 Esel; 9 Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 Gorilla; 23

Einfügen: Lösungsstrategie Situation: aktueller Wurzelknoten existiert neuer Begriff  aktueller Begriff linker Teilbaum nicht leer Fasan; 13 neu: Löwe; 12 Esel; 4 Pfau; 27 Esel; 9 aktuell: Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 Gorilla; 23

Einfügen: Lösungsstrategie Problemreduktion: Einfügen im linken Teilbaum Fasan; 13 neu: Löwe; 12 Esel; 4 Pfau; 27 Esel; 9 aktuell: Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 Gorilla; 23

Einfügen: Lösungsstrategie Situation: aktueller Wurzelknoten existiert neuer Begriff  aktueller Begriff linker Teilbaum ist leer Fasan; 13 neu: Löwe; 12 Esel; 4 Pfau; 27 Esel; 9 Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 aktuell: Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 Gorilla; 23

Einfügen: Lösungsstrategie Problemlösung: linker Nachfolger  neuer Knoten mit neuem Begriff Fasan; 13 neu: Löwe; 12 Esel; 4 Pfau; 27 Esel; 9 Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 aktuell: Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 Fasan; 13 Gorilla; 23

Einfügen: Lösungsstrategie Sonderfall: aktueller Wurzelknoten existiert nicht neu: Fasan; 13 aktuell: Problemlösung: Wurzel  neuer Knoten mit neuem Begriff neu: Fasan; 13 aktuell: Fasan; 13

Einfügen: Algorithmus

Suchen: Problemspezifikation Ausgangszustand: Esel : Suchbegriff Zielzustand: Suchergebnis: Esel; 4 Esel; 9 Löwe; 12 Esel; 4 Pfau; 27 Esel; 9 Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 Gorilla; 23

Suchen: Problemspezifikation Ausgangszustand: Esel : Suchbegriff Suchergebnis: Esel; 4 Esel; 9 Idee: Preorder-Durchlauf mit Aufsammeln aller Treffer Löwe; 12 Esel; 4 Pfau; 27 Esel; 9 Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 Gorilla; 23

Suchen: Lösungsstrategie Situation: aktueller Wurzelknoten existiert Suchbegriff  aktueller Begriff Esel : Suchbegriff Suchergebnis: Löwe; 12 : aktuell Esel; 4 Pfau; 27 Esel; 9 Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 Gorilla; 23

Suchen: Lösungsstrategie Problemreduktion: if Suchbegriff = aktueller Begriff then Daten aufnehmen linken Teilbaum durchsuchen Esel : Suchbegriff Suchergebnis: Löwe; 12 : aktuell Esel; 4 Pfau; 27 Esel; 9 Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 Gorilla; 23

Suchen: Lösungsstrategie Situation: aktueller Wurzelknoten existiert Suchbegriff  aktueller Begriff Esel : Suchbegriff Suchergebnis: Löwe; 12 Esel; 4 : aktuell Pfau; 27 Esel; 9 Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 Gorilla; 23

Suchen: Lösungsstrategie Problemreduktion: if Suchbegriff = aktueller Begriff then Daten aufnehmen linken Teilbaum durchsuchen Esel : Suchbegriff Suchergebnis: Esel; 4 Löwe; 12 Esel; 4 : aktuell Pfau; 27 Esel; 9 Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 Gorilla; 23

Suchen: Lösungsstrategie Situation: aktueller Wurzelknoten existiert Suchbegriff  aktueller Begriff Esel : Suchbegriff Suchergebnis: Esel; 4 Löwe; 12 Esel; 4 Pfau; 27 Esel; 9 : aktuell Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 Gorilla; 23

Suchen: Lösungsstrategie Problemreduktion: if Suchbegriff = aktueller Begriff then Daten aufnehmen linken Teilbaum durchsuchen Esel : Suchbegriff Suchergebnis: Esel; 4 Esel; 9 Löwe; 12 Esel; 4 Pfau; 27 Esel; 9 : aktuell Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 Gorilla; 23

Suchen: Lösungsstrategie Situation: aktueller Wurzelknoten existiert Suchbegriff > aktueller Begriff Esel : Suchbegriff Suchergebnis: Esel; 4 Esel; 9 Löwe; 12 Esel; 4 Pfau; 27 Esel; 9 Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 : aktuell Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 Gorilla; 23

Suchen: Lösungsstrategie Problemreduktion: rechten Teilbaum durchsuchen Esel : Suchbegriff Suchergebnis: Esel; 4 Esel; 9 Löwe; 12 Esel; 4 Pfau; 27 Esel; 9 Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 : aktuell Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 Gorilla; 23

Suchen: Lösungsstrategie Situation: aktueller Wurzelknoten existiert nicht Esel : Suchbegriff Suchergebnis: Esel; 4 Esel; 9 Löwe; 12 Esel; 4 Pfau; 27 Esel; 9 Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 : aktuell Gorilla; 23

Suchen: Lösungsstrategie Problemlösung: Mache nichts Esel : Suchbegriff Suchergebnis: Esel; 4 Esel; 9 Löwe; 12 Esel; 4 Pfau; 27 Esel; 9 Jaguar; 8 Panther; 4 Wolf; 31 Affe; 24 Giraffe; 6 Kamel; 45 Tiger; 6 Zebra; 10 : aktuell Gorilla; 23

Suchen: Algorithmus

Objektorientierte Modellierung Löwe; 12 Esel; 4 Pfau; 27 Esel; 9 Jaguar; 8 Panther; 4 Wolf; 31 0..1 0..2 Baum Knoten - wurzel: Knoten kennt - begriff: string - zeile: integer - links: Knoten - rechts: Knoten kennt + create(w: Knoten) + getWurzel: Knoten + istLeer: boolean + initialisieren + einfuegen(b: string; z: integer; aktuell: TKnoten) + suchen(b: string; k: TKnoten; var s: TStringList) + ausgeben(k: TKnoten; var s: TStringList) + create(b: string; z: int.; l,r: Knoten) + getBegriff: string + getZeile: integer + getLinks: Knoten + getRechts: Knoten

Aufgabe Im Ordner „Suchbaum1“ finden Sie ein vorstrukturiertes Programm zur Erzeugung und Verarbeitung von Suchbäumen. Implementieren Sie die Operation „einfuegen“, „suchen“ und „ausgeben“. Zur Kontrolle: Suchbaum2

Zusammenfassung: Dynamische Datenstrukturen Teil 3 Zusammenfassung: Dynamische Datenstrukturen

Datenstrukturierung * + x 3 2 – 5 Ein Grundproblem der Programmierung: Daten möglichst strukturgetreu zu repräsentieren

Datentypen / Datenstrukturen Ein Datentyp legt einen Wertebereich und die Grundoperationen, die auf die Elemente des Wertebereichs angewandt werden können, fest. Beispiele (für elementare Datentypen): > boolean (Wahrheitswert) > char (Zeichen) > integer (ganze Zahl) > real (Dezimalzahl) Eine Datenstruktur legt den Aufbau von komplexen Wertebereichen aus einfacheren Wertebereichen fest. Beispiele (für elementare Datenstrukturen): > Reihung / Feld > Verbund

Dynamische Datenstrukturen Dynamische Datenstrukturen werden benutzt, wenn sich die Struktur der Dateneinheiten zur Laufzeit dynamisch verändern kann.

Erzeugung dynamischer Datenstrukturen Erzeugung mit Hilfe von Referenzattributen (Pointer) Erzeugung mit Hilfe vordefinierter KLassen TList; TStringList; TStack; ...

Literaturhinweise Helmut Balzert: Lehrbuch Grundlagen der Informatik. Spektrum Ak. Verlag 1999. H.-P. Gumm u. M. Sommer: Einführung in die Informatik. Oldenbourg Verlag 2002. ...