SWE1 / Übung 10 (19.01.2011) Rekursion Binärbäume.

Slides:



Advertisements
Ähnliche Präsentationen
Dauermagnete Bei magnetischen Materialien unterscheidet man Eisenkerne bzw. Weicheisenstücke und Dauermagnete bzw. Hart-magnetische Materialien. Dauermagnete.
Advertisements

TAGUNG DER DEUTSCH-LUSITANISCHEN JURISTENVEREINIGUNG O processo penal português Panorâmica introdutória Der portugiesische Strafprozess ein einführender.
Ach wie gut, daß niemand weiß Der Schutz von Wissen
Herzlich Willkommen bei SIMPLE STABLE BULDING
Adjektivendungen Tabellen und Übungen.
ZWILLING Neuheiten 2008.
Das Hexenkochbuch Nicht Rattenschwänze, Spinnenbein
 Präsentation transkript:

SWE1 / Übung 10 (19.01.2011) Rekursion Binärbäume

Rekursion – Definition und Eigenschaften Methode, die sich selbst aufruft Rekursion umfasst immer Abbruchbedingung(en) (Rekursionsanker: Ausstieg/Rückkehr aus der Rekursion) Rekursive(n) Aufruf(e) Indirekte Rekursion Zwei oder mehrere Methoden rufen sich gegenseitig auf Nur eine dieser Methoden muss eine Abbruchbedingung bereitstellen Meist ineffizienter als iterative Lösung Oft klarer als iterative Lösung Fibonacci fib(n) = f(n-1) + f(n-2) für n>=2 f(0) = 0 und f(1) = 1 REKURSIONSANKER Fakultät Fak(n) { wenn n<=1 dann return 1; REKURSIONSANKER sonst (n * Fak(n-1)); Ineffizienz, zb. Speicherbedarf da alle lokalen Variablen gesichert werden müssen (Stack); bei Rückkehr/Aufstieg aus der Rekursion müssen diese dann restauriert werden; Speicherbedarf: Speicher lokaler Variablen * Anzahl (max.) Rekursionsschritte.

Rekursive Algorithmen: Grundstruktur Rekursion(){ if (Abbruchbedingung){ –– Rekursionsanker löse einfaches Problem; gib Ergebnis zurück; } else { –– rekursiver Aufruf zerlege Problem in einfachere(s) Problem(e) und rufe Rekursion() für diese(s) kleinere(n) Problem(e) auf; vereinige einfachere Lösung(en); } Fibonacci fib(n) = f(n-1) + f(n-2) für n>=2 f(0) = 0 und f(1) = 1 REKURSIONSANKER Fakultät Fak(n) { wenn n<=1 dann return 1; REKURSIONSANKER sonst (n * Fak(n-1)); Ineffizienz, zb. Speicherbedarf da alle lokalen Variablen gesichert werden müssen (Stack); bei Rückkehr/Aufstieg aus der Rekursion müssen diese dann restauriert werden; Speicherbedarf: Speicher lokaler Variablen * Anzahl (max.) Rekursionsschritte.

Binärer Suchbaum Ein Binärbaum ist entweder leer oder er besteht aus einem Knoten dem ein Element und zwei binäre Bäume zugeordnet sind (rekursive Definition) Bei einem Binären Suchbaum sind die Elemente sortiert: Alle Elemente im linken Teilbaum eines Knoten sind kleiner als das Knotenelement, alle Elemente im rechten Teilbaum sind größer (oder gleich) als das Knotenelement < 4 >

Binärer Suchbaum Binärbaum: Knoten K mit zugeordnetem E und zwei binären Bäumen B1 und B2 (rekursive Definition) B K B2 B1 E B K E B K E

Traversierung Pre Order (Wurzel, links, rechts) In Order (links, Wurzel, rechts) Post Order (links, rechts, Wurzel) Linz Graz Wels Enns Lienz < 6 >

Überlegungen zur Implementierung Operationen auf Bäume Anlegen eines Baumes Einfügen von Knoten Suchen von Knoten Traversierung (Löschen von Knoten) Aufteilung Funktionalität Baum hat Verweis auf Wurzelknoten Einfügen, Suchen von Knoten Traversierung Löschen von Knoten Knoten hat Verweis auf linken und rechten Teilbaum kennt Inhalt (Element) < 7 >