INFORMATIK UNIVERSITÄT LINZ A. Riener SWE1 / Übung 10 (19.01.2011) Rekursion Binärbäume SWE1 / Übung 10 INFORMATIK UNIVERSITÄT LINZ A. Riener 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 INFORMATIK UNIVERSITÄT LINZ SWE1 / Übung 10 A. Riener 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) Problem(e) auf; vereinige einfachere Lösung(en); } } kleinere(n) SWE1 / Übung 10 INFORMATIK UNIVERSITÄT LINZ A. Riener 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> INFORMATIK UNIVERSITÄT LINZ SWE1 / Übung 10 A. Riener Binärer Suchbaum Binärbaum: Knoten K mit zugeordnetem E und zwei binären Bäumen B1 und B2 (rekursive Definition) K B1 E B B2 K K E E B B INFORMATIK UNIVERSITÄT LINZ SWE1 / Übung 10 A. Riener Traversierung Pre Order (Wurzel, links, rechts) In Order (links, Wurzel, rechts) Post Order (links, rechts, Wurzel) Linz Graz Enns <6> Wels Lienz SWE1 / Übung 10 INFORMATIK UNIVERSITÄT LINZ A. Riener Überlegungen zur Implementierung Operationen auf Bäume Anlegen eines Baumes Einfügen von Knoten Suchen von Knoten Traversierung (Löschen von Knoten) <7> 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)