Binärbäume

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

description

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. *. +. –. x. 3. *. 5. 2. x. Termbaum. - PowerPoint PPT Presentation

Transcript of Binärbäume

Page 1: Binärbäume

BinärbäumeBinärbäume

Klaus Becker2003

Page 2: Binärbäume

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

3

KB

Bin

ärb

äu

me

Teil 1Teil 1

Termbäume

Page 4: Binärbä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.

Page 5: Binärbäume

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

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

7

KB

Bin

ärb

äu

me

Objektorientierte ModellierungObjektorientierte Modellierung

*

+

x 3

5 *

Page 8: Binärbäume

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

25

KB

Bin

ärb

äu

me

Teil 2Teil 2

Suchbäume

Page 26: Binärbä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.

Page 27: Binärbäume

27

KB

Bin

ärb

äu

me

PrototypPrototyp

Page 28: Binärbäume

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

57

KB

Bin

ärb

äu

me

Teil 3Teil 3

Zusammenfassung: Dynamische Datenstrukturen

Page 58: Binärbäume

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

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

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

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

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.

...