Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

7. Natürliche Binärbäume

Ähnliche Präsentationen


Präsentation zum Thema: "7. Natürliche Binärbäume"—  Präsentation transkript:

1 7. Natürliche Binärbäume
Ein Baum ist - ein azyklischer einfacher, zusammenhängender Graph - d. h. er enthält keine Schleifen und Zyklen: zwischen jedem Paar von Knoten besteht höchstens eine Kante Verallgemeinerung von Listen: Element (Knoten) hat möglicherweise mehrere Nachfolger (Söhne). Genau 1 Knoten ohne Vorgänger: Wurzel Knoten ohne Nachfolger: Blätter Häufig verwendete Datenstruktur: Entscheidungsbäume, Syntaxbäume, Ableitungsbäume, Suchbäume, ... Hier im Vordergrund: Verwendung von Bäumen zur Speicherung von Schlüsseln und Realisierung der Wörterbuchoperationen (Suchen, Einfügen, Entfernen) in Binärbäumen.

2 Darstellungsarten für orientierte Bäume
1) Mengendarstellung 2) Klammerdarstellung 3) Rekursives Einrücken 4) Graphendarstellung Stufe/Niveau 1 2 3 x a d h b c e f g

3 Ordnung von B: maximale Anzahl von Nachfolgern eines Knotens
Baum B heißt geordnet, wenn Nachfolger jedes Knotens geordnet sind (1., 2., 3. etc.; linker, rechter). Bei einem geordneten Baum bilden die Unterbäume Bi jedes Knotens eine geordnete Menge. (Beispiel: Arithmetischer Ausdruck) Eine geordnete Menge von geordneten Bäumen heißt Wald. Ordnung von B: maximale Anzahl von Nachfolgern eines Knotens Pfad der Länge k: Folge p0, ..., pk von Knoten, so daß gilt: pi Nachfolger von pi-1. Höhe eines Baums: maximaler Abstand eines Blattes von der Wurzel. Tiefe eines Knotens: Abstand zur Wurzel, d.h. Anzahl der Kanten auf dem Pfad von diesem Knoten zur Wurzel. Die Knoten auf dem Niveau i sind alle Knoten mit Tiefe i. Ein Baum der Ordnung n heißt vollständig, wenn alle Blätter dieselbe Tiefe haben und auf jedem Niveau die maximale Anzahl von Knoten vorhanden ist.

4 Definition Ein Binärbäum ist ein geordneter Baum, in dem jeder Knoten höchstens zwei Söhne besitzt (Ordnung 2). Üblicherweise wird verlangt, dass jeder Knoten 2 oder 0 Nachfolger hat. Ein Binärbaum ist eine endliche Menge von Elementen, die entweder leer ist oder ein ausgezeichnetes Element - die Wurzel des Baumes - besitzt und folgende Eigenschaften aufweist: - Die verbleibenden Elemente sind in zwei disjunkte Untermengen zerlegt. - Jede Untermenge ist selbst wieder ein Binärbaum und heißt linker bzw. rechter Unterbaum des ursprünglichen Baumes

5 Formale ADT-Spezifikationen
Datentyp BINBAUM Basistyp ELEM Operationen: LEER: BINBAUM  { TRUE, FALSE }; BAUEBAUM: BINBAUM x ELEM x BINBAUM  BINBAUM; LINKS: BINBAUM - {b0}  BINBAUM; WURZEL: BINBAUM - {b0}  ELEM; RECHTS: BINBAUM - {b0}  BINBAUM; ERZEUGE: b0

6 Satz: Die maximale Anzahl von Knoten eines Binärbaumes
 l, r,  BINBAUM,  d  ELEM LEER ( BAUEBAUM ( l, d, r )) = FALSE ; LINKS ( BAUEBAUM ( l, d, r )) = l ; WURZEL ( BAUEBAUM ( l, d, r )) = d ; RECHTS ( BAUEBAUM ( l, d, r )) = r ; Satz: Die maximale Anzahl von Knoten eines Binärbaumes (1) auf Stufe i ist 2i , i  0 (2) der Höhe h ist 2h - 1 , h  1 Definition: Ein vollständiger Binärbaum der Stufe n hat folgende Eigenschaften: - Jeder Knoten der Stufe n ist ein Blatt. - Jeder Knoten auf einer Stufe < n hat nicht-leere linke und rechte Unterbäume.

7 Definition: In einem strikten Binärbaum
besitzt jeder innere Knoten nicht-leere linke und rechte Unterbäume. Definition: Ein fast vollständiger Binärbaum ist ein Binärbaum (k  0), so daß gilt: (1) Jedes Blatt im Baum ist auf Stufe k oder k+1 (2) Falls ein innerer Knoten einen rechten Nachfolger auf Stufe k + 1 besitzt, dann ist sein linker Teilbaum vollständig mit Blättern auf Stufe k + 1. (3) Jeder Knoten auf Stufe < k hat nicht-leere linke und rechte Teilbäume. Definition: Bei einem ausgeglichenen Binärbaum ist jedes Blatt auf Stufe k oder k + 1 ( k  0 ). Jeder Knoten auf Stufe < k hat nicht-leere linke und rechte Teilbäume. Zwei Binärbäume werden als ähnlich bezeichnet, wenn sie dieselbe Struktur besitzen. Sie heißen äquivalent, wenn sie ähnlich sind und dieselbe Information enthalten.

8 Eigenschaften von Binärbäumen
1) Für zwei beliebige Knoten in einem Baum existiert genau ein Pfad, der sie verbindet. 2) Ein Binärbaum mit N Knoten hat N-1 Kanten. 3) Ein binärer Baum mit N inneren Knoten hat N + 1 äußere Knoten. 4) Die Höhe eines vollständigen binären Baumes mit N inneren Knoten beträgt log2N.

9 Binäre Suchbäume (natürliche Binärbäume)
Für jeden Knoten p eines binären Suchbaums gilt: Die Schlüssel im linken Teilbaum von p sind sämtlich kleiner als der Schlüssel von p, und dieser wiederum ist kleiner als sämtliche Schlüssel im rechten Teilbaum von p. Ein binärer Suchbaum B =<K,A,S> für eine linear geordnete Menge M ist ein geordneter, binärer Baum B =<K,A> mit einer Abbildung S: K->M von der Knotenmenge K in die Schlüsselmenge M. Für jeden Knoten k von B muss gelten: (1) S(k) > S(u) für alle Knoten u im linken Teilbaum von k, (2) S(k) <=S(u) für alle Knoten u im rechten Teilbaum von k. Aufbau von Binärbäumen (Beispiel).

10 2 Arten der Speicherung:
1) Suchbäume: Schlüssel an inneren Knoten gespeichert, Blätter repräsentieren Intervalle 2) Blattsuchbäume: Schlüssel in Blättern gespeichert, Markierung an inneren Knoten dienen als "Wegweiser" zum Finden des richtigen Blattes.

11 Repräsentation von Binärbäumen:
1) Arrays. Nachfolger von a[i] sind a[2i] und a[2i+1] Feldbaum - Realisierung Simulation einer dynamischen Struktur in einem statischen Feld. Eigenschaften: - statische Speicherplatzzuordnung - explizite Freispeicherverwaltung

12 Speicherung von Binärbäumen
2) Verkettete Speicherung * Info * Lsohn Rsohn ... ... Freispeicherverwaltung der Struktur wird von der Speicherverwaltung des Programmiersystems übernommen.

13 Typdefinition typedef struct Knoten { int key ; infotype info ; struct Knoten *leftson, *rightson; }; typedef struct Knoten *Knotenzeiger; Knotenzeiger Wurzel;

14 Suchen in natürlichen Binärbäumen
Annahme: Für jeden Knoten k mit Söhnen p0,..., pl-1 und Schlüsseln s1, ..., sl-1 gilt (Suchbaumbedingung): alle im Teilbaum unter pi-1 gespeicherten Schlüssel sind kleiner als si, si ist kleiner als alle im Teilbaum unter pi gespeicherten Schlüssel (1  i l-1). Suche nach Schlüssel x: Suche in gerade inspiziertem Knoten kleinstes i, so daß x < si. Falls solches si existiert, führe Suche in Knoten fort, auf den pi-1 zeigt (falls pi-1 = nil Suche erfolglos) . Falls solches si nicht existiert, führe Suche in Knoten fort, auf den pi zeigt (falls pi = nil Suche erfolglos) . Maximale Anzahl inspizierter Knoten: Tiefe des Baumes. Suche innerhalb der Knoten etwa durch lineares oder binäres Suchen zu realisieren. Da l m, ist Aufwand dafür konstant.

15 void Suchen (Knotenzeiger p, int x)
{ if ( p == NULL ) printf („Schluessel nicht gefunden!\n“); if ( x < p --> key) Suchen( p--> leftson, x ); else ( if x > p--> key ) Suchen( p --> rightson, x); else printf („Schluessel gefunden! \n“); }


Herunterladen ppt "7. Natürliche Binärbäume"

Ähnliche Präsentationen


Google-Anzeigen