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

Post on 06-Apr-2015

105 views 0 download

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

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.

...