4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.



Ähnliche Dokumente
Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Datenstrukturen & Algorithmen

Tutorium Algorithmen & Datenstrukturen

Binäre Bäume Darstellung und Traversierung

Kapiteltests zum Leitprogramm Binäre Suchbäume

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

WS 2009/10. Diskrete Strukturen

368 4 Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10

15 Optimales Kodieren

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

2.11 Kontextfreie Grammatiken und Parsebäume

a n auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert:

Algorithmen und Datenstrukturen Suchbaum

Also kann nur A ist roter Südler und B ist grüner Nordler gelten.

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

1 topologisches Sortieren

Kap. 4.2: Binäre Suchbäume

Datenstrukturen und Algorithmen

Wir gehen aus von euklidischen Anschauungsraum bzw. von der euklidischen Zeichenebene. Parallele Geraden schneiden einander nicht.

Zeichen bei Zahlen entschlüsseln

Primzahlen und RSA-Verschlüsselung

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Informationsblatt Induktionsbeweis

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany Stammbaum. Stammbaum. Stammbaum

Nachtrag zu binären Suchbäumen

Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR)

3. LINEARE GLEICHUNGSSYSTEME

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

Grundlagen der Theoretischen Informatik, SoSe 2008

13. Binäre Suchbäume

Lichtbrechung an Linsen

Repetitionsaufgaben Wurzelgleichungen

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN

Was ist Sozial-Raum-Orientierung?

0, v 6 = , v 4 = span(v 1, v 5, v 6 ) = span(v 1, v 2, v 3, v 4, v 5, v 6 ) 4. span(v 1, v 2, v 4 ) = span(v 2, v 3, v 5, v 6 )

Die Post hat eine Umfrage gemacht

1 Mathematische Grundlagen

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

Was meinen die Leute eigentlich mit: Grexit?

Partitionieren in Vista und Windows 7/8

Leichte-Sprache-Bilder

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Professionelle Seminare im Bereich MS-Office

Einführung in die Algebra

Bei der Anlage von Pauschalen ist folgendes zu beachten!!!!!!!!

Anwendungsbeispiele Buchhaltung

Formale Systeme, WS 2012/2013 Lösungen zu Übungsblatt 4

Wurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik

Anleitung über den Umgang mit Schildern

Anmerkungen zur Übergangsprüfung

Zahlenwinkel: Forscherkarte 1. alleine. Zahlenwinkel: Forschertipp 1

Vorkurs Informatik WiSe 15/16

Analysis I für Studierende der Ingenieurwissenschaften

WAS finde ich WO im Beipackzettel

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Rekursionen. Georg Anegg 25. November Methoden und Techniken an Beispielen erklärt

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Simplex-Umformung für Dummies

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

Urlaubsregel in David

Zeichnen von Graphen. graph drawing

Thema: Winkel in der Geometrie:

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

Musterlösungen zur Linearen Algebra II Blatt 5

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

Beweisbar sichere Verschlüsselung

Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume?

Programmiersprachen und Übersetzer

Festigkeit von FDM-3D-Druckteilen

Algorithmen und Datenstrukturen Balancierte Suchbäume

Theoretische Grundlagen der Informatik WS 09/10

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

SICHERN DER FAVORITEN

Theoretische Informatik SS 04 Übung 1

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Grundbegriffe der Informatik

Basis und Dimension. Als nächstes wollen wir die wichtigen Begriffe Erzeugendensystem und Basis eines Vektorraums definieren.

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Grundlagen der Informatik (BSc) Übung Nr. 5

Digitale Magazine ohne eigenen Speicher

Objektorientierte Programmierung für Anfänger am Beispiel PHP

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

Beispiel Zusammengesetzte Zufallsvariablen

Sowohl die Malstreifen als auch die Neperschen Streifen können auch in anderen Stellenwertsystemen verwendet werden.

3.2 Spiegelungen an zwei Spiegeln

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

Bauteilattribute als Sachdaten anzeigen

Grammatiken. Einführung

DATENSTRUKTUREN UND ZAHLENSYSTEME

Wichtige Forderungen für ein Bundes-Teilhabe-Gesetz

Das Leitbild vom Verein WIR

TECHNISCHE INFORMATION LESSOR LOHN/GEHALT BEITRAGSNACHWEIS-AUSGLEICH BUCH.-BLATT MICROSOFT DYNAMICS NAV

Binärdarstellung von Fliesskommazahlen

Wissenswertes über binäre Felder

Transkript:

Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel des Baums. Jeder Knoten außer r hat genau einen Vaterknoten 3. Die Wurzel r ist Vorfahre jedes Knotens. 4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes. In einem binären Baum unterscheidet man zwei Arten von Knoten: Blätter - das sind Knoten, die kein Kind haben - und innere Knoten - das sind Knoten, die mindestens ein Kind haben, wobei auch im Fall mit einem Kind festgelegt sein muss, ob dieses Kind ein linkes und ein rechtes ist. Wir sprechen von einem echten binären Baum, wenn jeder innere Knoten zwei Kinder hat. Das folgende Beispiel zeigt links einen echten binären Baum, in der Mitte einen Baum, der nicht binär ist, weil ein Knoten drei Kinder hat und rechts einen unechten binären Baum. Wurzel 3 Kinder nur ein Kind Binäre Bäume können in Haskell als rekursiv definierter, algebraischer Typ implementiert werden. Wir beginnen mit einem Datentyp BinTree zur Darstellung echter Binärbäume, für die zwei Konstruktoren ausreichen: Ein Konstruktor Leaf für Binärbäume, die nur aus einem Blatt bestehen und ein Konstruktor Node, der einen neuen Wurzelknoten als Vater über zwei vorhandene Binärbäume stellt. data BinTree = Leaf Node BinTree BinTree Zur Übertragung dieses Ansatzes auf unechte Binärbäume müsste man zwei zusätzliche Konstruktoren für Knoten mit nur einem rechten oder nur einem linken Kind einführen. Um das zu vermeiden, behilft man sich mit einem Trick. Jeder Knoten des darzustellenden Binärbaums T erhält soviele künstliche Blätter, dass er danch zwei Kinder hat (zweite Abbildung). Auf diese Weise entsteht ein echter Binärbaum, dessen innere Knoten die ursprünglichen Knoten von T sind. Da die neuen Blätter in T nicht vorhanden waren, benennt man sie mit Nil, einem Ausdruck für das Nichts. data NTree = Nil Node NTree NTree

nicht echter Binärbaum echter Binärbaum mit Nil Knoten Nil Knoten Obwohl beide Definitionen bis auf die verschiedene Namesgebung gleich sind, ist die verbundene Interpretation anders. Für BinTree werden Blätter nur mit dem Konstruktor Leaf erzeugt, in NTree stellt man ein Blatt als Node Nil Nil dar. Häufig will man die Knoten eines Binärbaums mit bestimmten Werten (z.b. Zahlen oder Zeichen) belegen. Das kann durch eine polymorphe Variation der Definition erreicht werden, wobei der Typ a der Belegungsobjekte mit angegeben werden muss: data NTree a = Nil Node a NTree NTree Tiefe, Höhe und Größe Definition: Sei T ein Baum und v T ein Knoten. Der Abstand von v zur Wurzel nennen wir die Tiefe von v und den Abstand von v zu seinem weitesten Nachfahren die Höhe von v. Die Höhe der Wurzel definiert die Höhe (und gleichzeitig die Tiefe) des Baums. Im folgenden Satz werden die wichtigsten Fakten über die Anzahl von Blättern und inneren Knoten in einem echten binären Baum zusammengestellt. Wir werden im Weiteren mit i(t) und b(t) die Anzahlen der inneren Knoten und der Blätter des Baums T bezeichnen. Die Größe eines Baums ist die Gesamtzahl der Knoten. Sie ergibt sich durch n(t) = i(t) + b(t). Für die Höhe eines Knotens v bzw. des Baums T werden wir die Bezeichnungen h(v) bzw. h(t) verwenden. Satz: Sei T ein echter binärer Baum der Höhe h. Dann gelten die folgenden fünf Bedingungen: (1) b(t) = i(t) + 1 () h i(t) h 1 (3) h + 1 b(t) h (4) h + 1 n(t) h+1 1 (5) log (n(t) + 1) 1 h n(t) 1

Beweis: Zuerst beobachten wir, dass die Bedingung (3) unmittelbar aus (1) und () folgt und (4) durch additive Verknüpfung von () und (3) entsteht. Die Ungleichungen in (5) folgen aus (4) durch einafche Umformungen und Anwendung der Logarithmusfunktion: n(t) h+1 1 = n(t)+1 h+1 = log (n(t) + 1) h+1 = log (n(t) + 1) 1 h und h + 1 n(t) = h n(t) 1 Bleibt nur noch der Beweis von (1) und (), den man durch vollständige Induktion nach h = h(t) führt: Der Induktionsanfang für h = 0 ist trivial, denn in diesem Fall besteht T nur aus der Wurzel, die gleichzeitig das einzige Blatt ist. Somit ist b(t) = 1, i(t) = 0 und h = 0 wodurch beide Bedingungen erfüllt sind. Beim Induktionsschritt geht man davon aus, dass (1) und () erfüllt sind für alle Bäume, deren Höhe kleiner als h ist (Induktionsvoraussetzung). Zum Nachweis der Induktionsbehauptung, die die Gültigkeit von (1) und () für alle Bäume T der Höhe h beinhaltet, betrachtet man zu einem solchen Baum T die Kinderknoten v 1 und v der Wurzel r von T und die zwei Teilbäume T 1 und T die aus v 1 mit allen seinen Nachfahren bzw. aus v mit allen seinen Nachfahren entstehen. Offensichtlich ist sowohl h 1 = h(t 1 ) < h als auch h = h(t ) < h und damit kann man die Induktionsvoraussetzung auf beide anwenden. Während die Blätter von T durch disjunkte Vereinigung der Blättermengen von T 1 und T entstehen, muss bei den inneren Knoten einen zusätzlichen, nämlich die Wurzel von T berücksichtigt werden: b(t) = b(t 1 ) + b(t ) und i(t) = i(t 1 ) + i(t ) + 1 Damit kann man unter Verwendung der Induktionsvoraussetzung Bedingung (1) wie folgt ableiten: b(t) = b(t 1 ) + b(t ) = (i(t 1 ) + 1) + (i(t ) + 1) = i(t) + 1 Auch die obere Schranke von i(t) ergibt sich auf ähnliche Weise: i(t) = i(t 1 ) + i(t ) + 1 ( h 1 1) + ( h 1) + 1 h 1 1 = h 1 Die untere Schranke von i(t) kann man auch ohne Induktionsvoraussetzung begründen: Nach Definition der Höhe gibt es in T einen Weg der Länge h von Wurzel zu einem Blatt. Bis auf den letzten Knoten auf diesem Weg sind alle Knoten innere Knoten und somit ist i(t) h. Traversierungen von Bäumen Häufig werden Bäume als Datenstrukturen verwendet, indem entweder alle Knoten des Baums oder nur die inneren Knoten oder nur die Blätter mit Zahlen oder anderen Objekten belegt werden. Zur systematischen Auflistung dieser Objekte verwendet man sogenannte Baum Traversierungen, das sind Methoden mit denen alle Knoten des Baums besucht werden. Die drei wichtigsten Standardmethoden sind: Preorder Traversierung

Postorder Traversierung Inorder Traversierung Alle drei Verfahren kann man rekursiv beschreiben und als gemeinsame Regel gilt die Verankerung, dass im trivialen Fall, in dem der Baum nur aus einem Knoten besteht (die gleichzeitig Wurzel und das einzige Blatt ist), nur dieser Knoten zu besuchen ist. Anderenfalls haben wir die Wurzel mit einem linken und einen rechten Teilbaum und verfahren nach folgenden Regeln: Preorder: Besuche zuerst die Wurzel, dann traversiere den linken Teilbaum und danach den rechten Teilbaum. Postorder: Traversiere zuerst den linken Teilbaum, danach den rechten Teilbaum und besuche zuletzt die Wurzel. Inorder: Traversiere zuerst den linken Teilbaum, besuche dann die Wurzel und traversiere danach den rechten Teilbaum. 1 3 4 5 6 7 8 9 Für den abgebildeten Baum ergeben sich bei den drei Travesierungen die folgenden Besuchssequenzen: Preorder: 1,, 4, 5, 8, 9, 3, 6, 7 Postorder: 4, 8, 9, 5,, 6, 7, 3, 1 Inorder: 4,, 8.5, 9, 1, 6, 3, 7 Eine der wichtigsten Anwendungen von Inorder-Traversierungen ist mit dem Begriff des binären Suchbaums verbunden: Definition: Ein binärer Suchbaum speichert in seinen Knoten Zahlen und hat die Eigenschaft, dass für jeden inneren Knoten v alle Zahlen aus dem linken Unterbaum von v kleiner oder gleich der Zahl in v sind und allen Zahlen im rechten Unterbaum von v größer oder gleich der Zahl in v sind.

6 3 11 5 9 13 8 9 Für einen binären Suchbaum gibt der Inorder-Durchlauf die geordnete Folge der gespeicherten Zahlen wieder. Das folgende Beispiel zeigt einen binären Suchbaum und mit den gestrichelten Pfeilen die Inorder-Traversierung. In einem binären Suchbäumen kann man sehr leicht überprüfen, ob eine bestimmte Zahl x gespeichert ist. Man beginnt den Suchprozess in der Wurzel und vergleicht x mit Zahl a in der Wurzel r. Es gibt 4 Fälle: 1. Ist x = a, dann hat man x bereits gefunden und ist fertig;. Ist x a und r ist ein Blatt, dann kommt x im Baum nicht vor; 3. Ist r ein innerer Knoten und x < a, dann kann x nur im linken Teilbaum sein (dessen Wurzel das linke Kind von r ist) und man wiederholt dort die Suche rekursiv. 4. Ist r ein innerer Knoten und x > a, dann kann x nur im rechten Teilbaum sein (dessen Wurzel das rechte Kind von r ist) und man wiederholt dort die Suche rekursiv. Die Suchzeit ist proportional zur Höhe des Baums, also O(h).