Aufgabe 1

a) Schreiben Sie eine Prozedur printtree(t:tree);, die einen Baum als Klammergebirge ausgibt. Das geht so:

Der leere Baum erzeugt keine Ausgabe.

Ein Knoten wird so ausgegeben "("<linker Unterbaum><Knoteninfo><rechter Unterbaum>")". (Anmerkung: hier stand irrtümlich <linker Unterbaum>"("Knoteninfo´")"<rechter Unterbaum>).

Schreiben Sie eine function CloneTree(t:tree):tree; die den Baum t identisch kopiert.

Testen Sie Ihre Prozedur/Funktion an folgenden Bäumen


Aufgabe 2

Gegeben sei die Zahlenfolge 20,4,3,19,17,18,1,2,16,0.

a) Erzeugen Sie eine Liste mit Hilfe der Datenstruktur list, die die Zahlen in dieser Reihenfolge aufnimmt.

b) Schreiben Sie eine function list2stree(l:list):tree, die die Liste in einem Sortierbaum speichert, der als Funktionsergebnis zurückgegeben wird.

c) Gegeben sei der Aufzählungstyp TraversierArt = (preorder, inorder, postorder); Schreiben Sie eine Funktion tree2list(t: tree; art : TraversierArt): list, die aus dem binären Baum t eine Liste erzeugt, in der die Knoteninformationen in der Reihenfolge der jeweiligen Traversierungsart enthält.

d) Testen Sie die Funktionen aus b) und c), in dem Sie die Liste aus a) in einen Sortierbaum "verwandeln" und dann in 3 verschiedene Listen mit Hilfe der 3 Traversierungsarten von c) umwandeln.


Abzugeben bis 8.6.2004, 24h