Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Diskrete Mathematik I Vorlesung 6 Binärer Suchbaum II.

Ähnliche Präsentationen


Präsentation zum Thema: "Diskrete Mathematik I Vorlesung 6 Binärer Suchbaum II."—  Präsentation transkript:

1 Diskrete Mathematik I Vorlesung 6 Binärer Suchbaum II

2 Übersicht Der Binäre Baum Binärer Suchbaum Definition Beispiel
1 Übersicht Der Binäre Baum Binärer Suchbaum Definition Beispiel Die Klasse Knoten Die Klasse Binärer Suchbaum (BST) FügeEin Rekursiv Suchen von Knoten

3 Der Binäre Baum n L R Ein leerer Baum ist ein binärer Baum
2 Der Binäre Baum Ein leerer Baum ist ein binärer Baum Sind L und R zwei binäre Bäume und w ein Knoten mit dem Inhalt n, dann ist die Verknüpfung von w, L und R ein binärer Baum. n L R

4 Binärer Suchbaum n <n >n
3 Binärer Suchbaum Ein binärer Baum B ist ein binärer Suchbaum, falls er leer ist oder die folgenden Eigenschaften erfüllt sind: die beiden Unterbäume sind binäre Suchbäume die Beschriftungen der Knoten des linken Suchbaums sind kleiner als die Beschriftung der Wurzel die Beschriftungen des rechten Suchbaums sind größer als die Beschriftung der Wurzel n <n >n

5 4 Binärer Suchbaum Aufbau eines binären Suchbaums aus folgenden Elementen:

6 5 Binärer Suchbaum 9 4 17 2 7 13 23

7 Die Klasse Knoten class Knoten { private int wert;
6 Die Klasse Knoten class Knoten { private int wert; private Knoten links, rechts; Knoten(int i) { wert = i; links = rechts = null; } void SetzeWert(int i) { wert = i; } int GibWert() { return wert; } void SetzeLinks(Knoten k) { links = k; } Knoten GibLinks() { return links; } void SetzeRechts(Knoten k) { rechts = k; } Knoten GibRechts() { return rechts; } }

8 Die Klasse Binärer Suchbaum (BST)
7 Die Klasse Binärer Suchbaum (BST) class BST { private Knoten Wurzel; class Knoten {...} BST() { wurzel = null; } void FügeEin(int i) { wurzel = FügeEin(wurzel, i); } Aufruf der rekursiven Prozedur

9 FügeEin Rekursiv private Knoten FügeEin(Knoten aktuell, int ein) {
8 FügeEin Rekursiv private Knoten FügeEin(Knoten aktuell, int ein) { if (aktuell == null) { aktuell = new Knoten(ein);} else { if (ein < aktuell.GibWert()) aktuell.SetzeLinks(FügeEin(aktuell.GibLinks(), ein)); if (ein > aktuell.GibWert()) aktuell.SetzeRechts(FügeEin(aktuell.GibRechts(), ein)); } return aktuell;

10 Suchen von Knoten Suche einer Zahl k in einem binären Suchbaum B
9 Suchen von Knoten Suche einer Zahl k in einem binären Suchbaum B B ist leer k kann nicht im Baum sein. B ist nicht leer B.wert = k : k ist gefunden, d.h. bereits in B vorhanden. B.wert < k : Suche im rechten Unterbaum von B. B.wert > k : Suche im linken Unterbaum von B.

11 10 Suchen von Knoten Suche für k = 15 18 14 9 10 24 16 13 15 A 13x

12 Suchen von Knoten 18 14 9 10 24 16 13 15 Suche für k = 15 k < 16 A
13x

13 Suchen von Knoten 18 14 9 10 24 16 13 15 Suche für k = 15 k > 10 A
13x

14 Suchen von Knoten 18 14 9 10 24 16 13 15 Suche für k = 15 k > 14 A
13x

15 Suchen von Knoten 18 14 9 10 24 16 13 15 Suche für k = 15 k = 15 A 13x

16 Suchen von Knoten 18 14 9 10 24 16 13 15 Suche für k = 11 k < 16 A
10x

17 Suchen von Knoten 18 14 9 10 24 16 13 15 Suche für k = 11 k > 10 A
10x

18 Suchen von Knoten 18 14 9 10 24 16 13 15 Suche für k = 11 k < 14 A
10x

19 Suchen von Knoten 18 14 9 10 24 16 13 15 Suche für k = 11
k nicht vorhanden A 10x

20 Suchen von Knoten class BST { ... boolean Suche(int i) {
12 Suchen von Knoten class BST { ... boolean Suche(int i) { return Suche(wurzel, i); } private boolean Suche(Knoten aktuell, int i) { boolean gefunden = false; if (aktuell != null) { gefunden = (aktuell.GibWert() == i) ; if (aktuell.GibWert() < i) gefunden = Suche(aktuell.GibRechts(), i); if (aktuell.GibWert() > i) gefunden = Suche(aktuell.GibLinks(), i); return gefunden; ...} Vergleich


Herunterladen ppt "Diskrete Mathematik I Vorlesung 6 Binärer Suchbaum II."

Ähnliche Präsentationen


Google-Anzeigen