Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12...

62
Binärbäume Binärbäume Klaus Becker 2003

Transcript of Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12...

Page 1: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

BinärbäumeBinärbäume

Klaus Becker2003

Page 2: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 3: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

3

KB

Bin

ärb

äu

me

Teil 1Teil 1

Termbäume

Page 4: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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.

Page 5: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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.

Page 6: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 7: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

7

KB

Bin

ärb

äu

me

Objektorientierte ModellierungObjektorientierte Modellierung

*

+

x 3

5 *

Page 8: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

8

KB

Bin

ärb

äu

meOOA-ModellOOA-Modell

Knoten

inhalt: ...links: Knotenrechts: Knoten

...

Baum

wurzel: Knoten

...

kenntkennt

0..20..1

Page 9: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 10: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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;

Page 11: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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;

Page 12: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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.

Page 13: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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 *

Page 14: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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 *

Page 15: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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 *

Page 16: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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“

Page 17: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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“

Page 18: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 19: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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:

Page 20: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 21: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 22: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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)

*

Page 23: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 24: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

24

KB

Bin

ärb

äu

me

AufgabeAufgabe

Implementieren Sie die Operation „auswerten“ und ergänzen Sie das Testprogramm.

Zur Kontrolle: Termbaum2

Page 25: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

25

KB

Bin

ärb

äu

me

Teil 2Teil 2

Suchbäume

Page 26: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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.

Page 27: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

27

KB

Bin

ärb

äu

me

PrototypPrototyp

Page 28: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 29: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 30: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 31: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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:

Page 32: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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:

Page 33: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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:

Page 34: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 35: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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:

Page 36: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 37: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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:

Page 38: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 39: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 40: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 41: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 42: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 43: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 44: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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:

Page 45: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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:

Page 46: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 47: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 48: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 49: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 50: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 51: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 52: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 53: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 54: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 55: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 56: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 57: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

57

KB

Bin

ärb

äu

me

Teil 3Teil 3

Zusammenfassung: Dynamische Datenstrukturen

Page 58: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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 *

Page 59: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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)

Page 60: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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.

Page 61: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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

Page 62: Binärbäume Klaus Becker 2003. KB Binärbäume 2 Datenstrukturierung mit Bäumen Wolf; 31 Löwe; 12 Esel; 4 Jaguar; 8 Gorilla; 23 Affe; 24Kamel; 45Giraffe;

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.

...