Post on 06-Apr-2015
BinärbäumeBinärbäume
Klaus Becker2003
2
KB
Bin
ärb
äu
me
Datenstrukturierung mit BäumenDatenstrukturierung mit Bäumen
Wolf; 31
Löwe; 12
Esel; 4
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9
3
KB
Bin
ärb
äu
me
Teil 1Teil 1
Termbäume
4
KB
Bin
ärb
äu
meTermbaumTermbaum
*
+
x 3
2 x
–
5 *
Ein Termbaum dient dazu, einen Rechenterm wie z. B. (x+3)*(2x-5) strukturell zu repräsentieren.
Ziel: Entwicklung eines Programms zur Verarbeitung von Term(bäum)en.Ziel: Entwicklung eines Programms zur Verarbeitung von Term(bäum)en.
5
KB
Bin
ärb
äu
meBinärbaumBinärbaum
*
+
x 3
2 x
–
5 *
linker Teilbaum
rechter Teilbaum
Wurzel
Ein Binärbaum ist leer oder besteht aus einer Wurzel und zwei Binärbäumen, dem linken und rechten Teilbaum.
6
KB
Bin
ärb
äu
me
Objektorientierte ModellierungObjektorientierte Modellierung
inhalt = *
rechts
links
inhalt = +
rechts
links
inhalt = x
rechts
links
inhalt = 3
rechts
links
inhalt = 2
rechts
links
inhalt = x
rechts
links
inhalt = *
rechts
links
inhalt = 5
rechts
links
inhalt = –
rechts
links
7
KB
Bin
ärb
äu
me
Objektorientierte ModellierungObjektorientierte Modellierung
*
+
x 3
–
5 *
8
KB
Bin
ärb
äu
meOOA-ModellOOA-Modell
Knoten
inhalt: ...links: Knotenrechts: Knoten
...
Baum
wurzel: Knoten
...
kenntkennt
0..20..1
9
KB
Bin
ärb
äu
meOOD-ModellOOD-Modell
Knoten
- inhalt: string- links: Knoten- rechts: Knoten
+ create(i: string; l,r: Knoten)+ getInhalt: string+ getLinks: Knoten+ getRechts: Knoten
Baum
- wurzel: Knoten
+ create(w: Knoten)+ getWurzel: Knoten+ istLeer: boolean+ ausgebenInOrder(k: Knoten): string+ ausgebenPreOrder(k: Knoten): string+ ausgebenPostOrder(k: Knoten): string
TermBaum
+ auswerten(k: Knoten; w: integer): integer
kennt
0..1
kennt
0..2
ist
10
KB
Bin
ärb
äu
me
ImplementierungImplementierung
constructor TKnoten.create(inhalt: string; links, rechts: TKnoten);beginself.inhalt := inhalt; self.links := links; self.rechts := rechtsend;
function TKnoten.getInhalt: string;beginresult := inhalt;end;
function TKnoten.getLinks: TKnoten;beginresult := links;end;
function TKnoten.getRechts: TKnoten;beginresult := rechts;end;
11
KB
Bin
ärb
äu
me
ImplementierungImplementierung
constructor TBaum.create(w: TKnoten);beginwurzel := w;end;
function TBaum.istLeer: boolean;beginresult := (wurzel = nil);end;
function TBaum.getWurzel: TKnoten;beginresult := wurzel;end;
procedure TBaum.setWurzel(k: TKnoten);beginwurzel := k;end;
12
KB
Bin
ärb
äu
me
Erzeugung des TermbaumsErzeugung des Termbaums
*
+
x 3
2 x
–
5 *
Aufgabe: Ein Binärbaum (wie der hier dargestellte) soll mit Hilfe der bisher implementierten Baumoperationen erzeugt werden.
Aufgabe: Ein Binärbaum (wie der hier dargestellte) soll mit Hilfe der bisher implementierten Baumoperationen erzeugt werden.
13
KB
Bin
ärb
äu
me
Erzeugung des Termbaums – Version 1Erzeugung 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 x
–
5 *
14
KB
Bin
ärb
äu
me
Erzeugung des Termbaums – Version 2Erzeugung 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 x
–
5 *
15
KB
Bin
ärb
äu
me
Traversierung eines BinärbaumsTraversierung eines Binärbaums
Aufgabe: Ein Binärbaum (wie der hier dargestellte) soll nach einer vorgegeben Regel durchlaufen und verarbeitet (z. B. ausgegeben) werden.
Aufgabe: Ein Binärbaum (wie der hier dargestellte) soll nach einer vorgegeben Regel durchlaufen und verarbeitet (z. B. ausgegeben) werden.
*
+
x 3
2 x
–
5 *
16
KB
Bin
ärb
äu
me
Preorder-Traversierung eines Preorder-Traversierung eines Binärbaums Binärbaums
*
+
x 3
2 x
–
5 *
* + x 3 - * 2 x 5
Verarbeite die WurzelTraversiere den linken Teilbaum in „Preorder“Traversiere den rechten Teilbaum in „Preorder“
17
KB
Bin
ärb
äu
me
Inorder-Traversierung eines Inorder-Traversierung eines Binärbaums Binärbaums
*
+
x 3
2 x
–
5 *
x + 3 * 2 * x - 5
Traversiere den linken Teilbaum in „Inorder“Verarbeite die WurzelTraversiere den rechten Teilbaum in „Inorder“
18
KB
Bin
ärb
äu
me
Postorder-Traversierung eines Postorder-Traversierung eines Binärbaums Binärbaums
*
+
x 3
2 x
–
5 *
x 3 + 2 x * 5 - *
Traversiere den linken Teilbaum in „Postorder“Traversiere den rechten Teilbaum in „Postorder“Verarbeite die Wurzel
19
KB
Bin
ärb
äu
me
Preorder-AusgabePreorder-Ausgabe
function TBaum.ausgebenPreOrder(k:TKnoten):String;
beginif (k = nil) then result := '' else result := k.getInhalt + ausgebenPreOrder(k.getLinks) + ausgebenPreOrder(k.getRechts);end;
baum.ausgebenPreOrder(baum.getWurzel)
Aufruf:
Deklaration:
20
KB
Bin
ärb
äu
me
AufgabeAufgabe
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
21
KB
Bin
ärb
äu
me
Auswertung eines TermbaumsAuswertung eines Termbaums
Aufgabe: Ein Termbaum (wie der hier dargestellte) soll bzgl. eines vorgegeben x-Wertes ausgewertet werden: x-Wert einsetzen und Gesamtwert berechnen
Aufgabe: Ein Termbaum (wie der hier dargestellte) soll bzgl. eines vorgegeben x-Wertes ausgewertet werden: x-Wert einsetzen und Gesamtwert berechnen
*
+
x 3
2 x
–
5 *
x = 3: Auswertung liefert 6
22
KB
Bin
ärb
äu
me
Rekursive ProblemreduktionRekursive Problemreduktion
baum.auswerten(k.links,w)
*
+
x 3
2 x
–
5 *
if k.getInhalt = '*' then result :=
baum.auswerten(k.rechts,w)
baum.auswerten(k,w)
*
23
KB
Bin
ärb
äu
me
RekursionsanfangRekursionsanfang
if k.getInhalt = 'x' then
result := w
x
if ((k.getRechts = nil) and (k.getLinks = nil)) then
else
result := StrToInt(k.getInhalt);
baum.auswerten(k,w)
3
24
KB
Bin
ärb
äu
me
AufgabeAufgabe
Implementieren Sie die Operation „auswerten“ und ergänzen Sie das Testprogramm.
Zur Kontrolle: Termbaum2
25
KB
Bin
ärb
äu
me
Teil 2Teil 2
Suchbäume
26
KB
Bin
ärb
äu
meTextindexTextindex
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.
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.
27
KB
Bin
ärb
äu
me
PrototypPrototyp
28
KB
Bin
ärb
äu
me
Zur Wahl der DatenstrukturZur Wahl der Datenstruktur
Wolf; 31
Löwe; 12
Esel; 4
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9
Esel; 9Affe; 24 Giraffe; 6Esel; 4 Jaguar; 8Gorilla; 23
Liste Lineare Suche
Binärbaum Binäre Suche
29
KB
Bin
ärb
äu
meSuchbaumSuchbaum
Wolf; 31
Löwe; 12
Esel; 4
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9
alle Wurzel alle > Wurzel
30
KB
Bin
ärb
äu
meSuchbaumSuchbaum
Wolf; 31
Löwe; 12
Esel; 4
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9
alle Wurzel alle > Wurzel
31
KB
Bin
ärb
äu
me
Einfügen: ProblemspezifikationEinfügen: Problemspezifikation
Wolf; 31
Löwe; 12
Esel; 4
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9
Fasan; 13
Ausgangszustand:
Fasan; 13
Zielzustand:
32
KB
Bin
ärb
äu
me
Einfügen: LösungsstrategieEinfügen: Lösungsstrategie
Wolf; 31
Löwe; 12
Esel; 4
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9
Situation: aktueller Wurzelknoten existiertneuer Begriff aktueller Begrifflinker Teilbaum nicht leer
aktuell:
Fasan; 13
neu:
33
KB
Bin
ärb
äu
me
Einfügen: LösungsstrategieEinfügen: Lösungsstrategie
Wolf; 31
Esel; 4
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9
Problemreduktion: Einfügen im linken Teilbaum
Fasan; 13
neu:
Löwe; 12 aktuell:
34
KB
Bin
ärb
äu
me
Einfügen: LösungsstrategieEinfügen: Lösungsstrategie
Wolf; 31
Löwe; 12
Esel; 4
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9
Fasan; 13
neu:
aktuell:
Situation: aktueller Wurzelknoten existiertneuer Begriff > aktueller Begriffrechter Teilbaum nicht leer
35
KB
Bin
ärb
äu
me
Einfügen: LösungsstrategieEinfügen: Lösungsstrategie
Wolf; 31
Löwe; 12
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9
Fasan; 13
neu:Problemreduktion: Einfügen im rechten Teilbaum
Esel; 4aktuell:
36
KB
Bin
ärb
äu
me
Einfügen: LösungsstrategieEinfügen: Lösungsstrategie
Wolf; 31
Löwe; 12
Esel; 4
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9
Fasan; 13
neu:
aktuell:
Situation: aktueller Wurzelknoten existiertneuer Begriff aktueller Begrifflinker Teilbaum nicht leer
37
KB
Bin
ärb
äu
me
Einfügen: LösungsstrategieEinfügen: Lösungsstrategie
Wolf; 31
Löwe; 12
Esel; 4
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9
Fasan; 13
neu:Problemreduktion: Einfügen im linken Teilbaum
Jaguar; 8aktuell:
38
KB
Bin
ärb
äu
me
Einfügen: LösungsstrategieEinfügen: Lösungsstrategie
Wolf; 31
Löwe; 12
Esel; 4
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9
Fasan; 13
neu:
aktuell:
Situation: aktueller Wurzelknoten existiertneuer Begriff aktueller Begrifflinker Teilbaum ist leer
39
KB
Bin
ärb
äu
me
Einfügen: LösungsstrategieEinfügen: Lösungsstrategie
Wolf; 31
Löwe; 12
Esel; 4
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9
Fasan; 13
Fasan; 13
neu:
aktuell:
Problemlösung: linker Nachfolger neuer Knoten mit neuem Begriff
40
KB
Bin
ärb
äu
me
Einfügen: LösungsstrategieEinfügen: Lösungsstrategie
Sonderfall: aktueller Wurzelknoten existiert nicht
aktuell:
Fasan; 13
neu:
Problemlösung: Wurzel neuer Knoten mit neuem Begriff
aktuell:
Fasan; 13
neu:
Fasan; 13
41
KB
Bin
ärb
äu
me
Einfügen: AlgorithmusEinfügen: Algorithmus
Einfügen eines neuen Begriffs in einen Baum
existiert
aktueller
Wurzelknoten
?ja nein
neuer
Begriff
<=
aktueller
Begriff
?
ja nein
hat
aktuelle
Wurzel
linken
Nachfolger
?
ja nein
Einfügen
im
linken
Teilbaum
linker Nachfolger
:=
neuer Knoten
mit
neuem Begriff
hat
aktuelle
Wurzel
rechten
Nachfolger
?
ja nein
Einfügen
im
rechten
Teilbaum
rechter Nachfolger
:=
neuer Knoten
mit
neuem Begriff
Wurzel :=
neuer Knoten
mit
neuem Begriff
42
KB
Bin
ärb
äu
me
Suchen: ProblemspezifikationSuchen: Problemspezifikation
Wolf; 31
Löwe; 12
Esel; 4
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9
EselAusgangszustand:
Zielzustand:
: Suchbegriff
Suchergebnis:
Esel; 4Esel; 9
43
KB
Bin
ärb
äu
me
Suchen: ProblemspezifikationSuchen: Problemspezifikation
Wolf; 31
Löwe; 12
Esel; 4
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9
EselAusgangszustand:
Idee:Preorder-Durchlauf mit Aufsammeln aller Treffer
: Suchbegriff
Suchergebnis:
Esel; 4Esel; 9
44
KB
Bin
ärb
äu
me
Suchen: LösungsstrategieSuchen: Lösungsstrategie
Wolf; 31
Löwe; 12
Esel; 4
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9
Situation:
aktueller Wurzelknoten existiertSuchbegriff aktueller Begriff
Esel
: aktuell
: Suchbegriff
Suchergebnis:
45
KB
Bin
ärb
äu
me
Suchen: LösungsstrategieSuchen: Lösungsstrategie
Wolf; 31
Löwe; 12
Esel; 4
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9
Problemreduktion:
if Suchbegriff = aktueller Begriff then Daten aufnehmenlinken Teilbaum durchsuchen
: aktuell
Esel : Suchbegriff
Suchergebnis:
46
KB
Bin
ärb
äu
me
Suchen: LösungsstrategieSuchen: Lösungsstrategie
Wolf; 31
Löwe; 12
Esel; 4
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9
: aktuell
Esel : Suchbegriff
Suchergebnis:
Situation:
aktueller Wurzelknoten existiertSuchbegriff aktueller Begriff
47
KB
Bin
ärb
äu
me
Suchen: LösungsstrategieSuchen: Lösungsstrategie
Wolf; 31
Löwe; 12
Esel; 4
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9
: aktuell
Esel : Suchbegriff
Suchergebnis:
Esel; 4
Problemreduktion:
if Suchbegriff = aktueller Begriff then Daten aufnehmenlinken Teilbaum durchsuchen
48
KB
Bin
ärb
äu
me
Suchen: LösungsstrategieSuchen: Lösungsstrategie
Wolf; 31
Löwe; 12
Esel; 4
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9 : aktuell
Esel : Suchbegriff
Suchergebnis:
Esel; 4
Situation:
aktueller Wurzelknoten existiertSuchbegriff aktueller Begriff
49
KB
Bin
ärb
äu
me
Suchen: LösungsstrategieSuchen: Lösungsstrategie
Wolf; 31
Löwe; 12
Esel; 4
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9 : aktuell
Esel : Suchbegriff
Suchergebnis:
Esel; 4Esel; 9
Problemreduktion:
if Suchbegriff = aktueller Begriff then Daten aufnehmenlinken Teilbaum durchsuchen
50
KB
Bin
ärb
äu
me
Suchen: LösungsstrategieSuchen: Lösungsstrategie
Wolf; 31
Löwe; 12
Esel; 4
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9
: aktuell
Esel : Suchbegriff
Suchergebnis:
Esel; 4Esel; 9
Situation:
aktueller Wurzelknoten existiertSuchbegriff > aktueller Begriff
51
KB
Bin
ärb
äu
me
Suchen: LösungsstrategieSuchen: Lösungsstrategie
Wolf; 31
Löwe; 12
Esel; 4
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9
: aktuell
Esel : Suchbegriff
Suchergebnis:
Esel; 4Esel; 9
Problemreduktion:
rechten Teilbaum durchsuchen
52
KB
Bin
ärb
äu
me
Suchen: LösungsstrategieSuchen: Lösungsstrategie
Wolf; 31
Löwe; 12
Esel; 4
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9
: aktuell
Esel : Suchbegriff
Suchergebnis:
Esel; 4Esel; 9
Situation:
aktueller Wurzelknoten existiert nicht
53
KB
Bin
ärb
äu
me
Suchen: LösungsstrategieSuchen: Lösungsstrategie
Wolf; 31
Löwe; 12
Esel; 4
Jaguar; 8
Gorilla; 23
Affe; 24 Kamel; 45
Giraffe; 6 Zebra; 10
Tiger; 6
Panther; 4
Pfau; 27
Esel; 9
: aktuell
Esel : Suchbegriff
Suchergebnis:
Esel; 4Esel; 9
Problemlösung:
Mache nichts
54
KB
Bin
ärb
äu
me
Suchen: AlgorithmusSuchen: Algorithmus
Suchen eines Begriffs in einem Baum
existiert
aktueller
Wurzelknoten
?ja nein
neuer Begriff
<=
aktueller Begriff
?ja nein
neuer Begriff
=
aktueller Begriff
?ja nein
Begriff und Daten
aufnehmen
linken Teilbaum durchsuchen
rechten
Teilbaum
durchsuchen
55
KB
Bin
ärb
äu
me
Objektorientierte ModellierungObjektorientierte Modellierung
Knoten
- begriff: string- zeile: integer- links: Knoten- rechts: Knoten
+ create(b: string; z: int.; l,r: Knoten)+ getBegriff: string+ getZeile: integer+ getLinks: Knoten+ getRechts: Knoten
Baum
- wurzel: Knoten
+ 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)
Wolf; 31
Löwe; 12
Esel; 4
Jaguar; 8 Panther; 4
Pfau; 27
Esel; 9
kennt
0..2
kennt
0..1
56
KB
Bin
ärb
äu
me
AufgabeAufgabe
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
57
KB
Bin
ärb
äu
me
Teil 3Teil 3
Zusammenfassung: Dynamische Datenstrukturen
58
KB
Bin
ärb
äu
me
DatenstrukturierungDatenstrukturierung
Ein Grundproblem der Programmierung: Daten möglichst strukturgetreu zu repräsentierenEin Grundproblem der Programmierung: Daten möglichst strukturgetreu zu repräsentieren
*
+
x 3
2 x
–
5 *
59
KB
Bin
ärb
äu
me
Datentypen / DatenstrukturenDatentypen / Datenstrukturen
Eine Datenstruktur legt den Aufbau von komplexen Wertebereichen aus einfacheren Wertebereichen fest.Eine Datenstruktur legt den Aufbau von komplexen Wertebereichen aus einfacheren Wertebereichen fest.
Beispiele (für elementare Datenstrukturen):> Reihung / Feld > Verbund
Ein Datentyp legt einen Wertebereich und die Grundoperationen, die auf die Elemente des Wertebereichs angewandt werden können, fest.
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)
60
KB
Bin
ärb
äu
me
Dynamische DatenstrukturenDynamische Datenstrukturen
Dynamische Datenstrukturen werden benutzt, wenn sich die Struktur der Dateneinheiten zur Laufzeit dynamisch verändern kann.
Dynamische Datenstrukturen werden benutzt, wenn sich die Struktur der Dateneinheiten zur Laufzeit dynamisch verändern kann.
61
KB
Bin
ärb
äu
me
Erzeugung dynamischer Erzeugung dynamischer DatenstrukturenDatenstrukturen
Erzeugung mit Hilfe von Referenzattributen (Pointer) Erzeugung mit Hilfe von Referenzattributen (Pointer)
Erzeugung mit Hilfe vordefinierter KLassenErzeugung mit Hilfe vordefinierter KLassen
TList; TStringList; TStack; ...
62
KB
Bin
ärb
äu
me
LiteraturhinweiseLiteraturhinweise
Helmut Balzert: Lehrbuch Grundlagen der Informatik. Spektrum Ak. Verlag 1999.
H.-P. Gumm u. M. Sommer: Einführung in die Informatik. Oldenbourg Verlag 2002.
...