Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

G.Heyer Algorithmen und Datenstrukturen 1 7. Natürliche Binärbäume Ein Baum ist - ein azyklischer einfacher, zusammenhängender Graph - d. h. er enthält.

Ähnliche Präsentationen


Präsentation zum Thema: "G.Heyer Algorithmen und Datenstrukturen 1 7. Natürliche Binärbäume Ein Baum ist - ein azyklischer einfacher, zusammenhängender Graph - d. h. er enthält."—  Präsentation transkript:

1 G.Heyer Algorithmen und Datenstrukturen 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 G.Heyer Algorithmen und Datenstrukturen 2 Darstellungsarten für orientierte Bäume 1) Mengendarstellung 2) Klammerdarstellung 3) Rekursives Einrücken 4) Graphendarstellung x h b da cef g Stufe/Niveau

3 G.Heyer Algorithmen und Datenstrukturen 3 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 B i 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 p 0,..., p k von Knoten, so daß gilt: p i Nachfolger von p i-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 G.Heyer Algorithmen und Datenstrukturen 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 G.Heyer Algorithmen und Datenstrukturen 5 Formale ADT-Spezifikationen DatentypBINBAUM BasistypELEM Operationen: LEER:BINBAUM { TRUE, FALSE }; BAUEBAUM:BINBAUM x ELEM x BINBAUM BINBAUM; LINKS:BINBAUM - {b 0 } BINBAUM; WURZEL:BINBAUM - {b 0 } ELEM; RECHTS:BINBAUM - {b 0 } BINBAUM; ERZEUGE:b 0

6 G.Heyer Algorithmen und Datenstrukturen 6 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 2 i, i 0 (2) der Höhe h ist 2 h - 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 G.Heyer Algorithmen und Datenstrukturen 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 G.Heyer Algorithmen und Datenstrukturen 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 log 2 N.

9 G.Heyer Algorithmen und Datenstrukturen 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 = für eine linear geordnete Menge M ist ein geordneter, binärer Baum B = 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 G.Heyer Algorithmen und Datenstrukturen 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 G.Heyer Algorithmen und Datenstrukturen 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 G.Heyer Algorithmen und Datenstrukturen 12 Speicherung von Binärbäumen 2) Verkettete Speicherung *Info * LsohnRsohn... Freispeicherverwaltung der Struktur wird von der Speicherverwaltung des Programmiersystems übernommen.

13 G.Heyer Algorithmen und Datenstrukturen 13 Typdefinition typedef struct Knoten { int key; infotypeinfo; struct Knoten *leftson, *rightson; }; typedef struct Knoten *Knotenzeiger; Knotenzeiger Wurzel;

14 G.Heyer Algorithmen und Datenstrukturen 14 Suchen in natürlichen Binärbäumen Annahme: Für jeden Knoten k mit Söhnen p 0,..., p l-1 und Schlüsseln s 1,..., s l-1 gilt (Suchbaumbedingung): alle im Teilbaum unter p i-1 gespeicherten Schlüssel sind kleiner als s i, s i ist kleiner als alle im Teilbaum unter p i gespeicherten Schlüssel (1 i l-1). Suche nach Schlüssel x: Suche in gerade inspiziertem Knoten kleinstes i, so daß x < s i. Falls solches s i existiert, führe Suche in Knoten fort, auf den p i-1 zeigt (falls p i-1 = nil Suche erfolglos). Falls solches s i nicht existiert, führe Suche in Knoten fort, auf den p i zeigt (falls p i = 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 G.Heyer Algorithmen und Datenstrukturen 15 void Suchen (Knotenzeiger p, int x) { if ( p == NULL ) printf (Schluessel nicht gefunden!\n); if ( x key) Suchen( p--> leftson, x ); else ( if x > p--> key ) Suchen( p --> rightson, x); else printf (Schluessel gefunden! \n); }


Herunterladen ppt "G.Heyer Algorithmen und Datenstrukturen 1 7. Natürliche Binärbäume Ein Baum ist - ein azyklischer einfacher, zusammenhängender Graph - d. h. er enthält."

Ähnliche Präsentationen


Google-Anzeigen