www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheHaskell-Forum

phy51km4n

Gepostet:
25.01.2009 14:10

Einen n-ären Baum in Liste umwandeln  
Folgendes Haskell-Programm ist gegeben:
data Baum a = Knoten a [Baum a]
baum :: Baum Char
baum = Knoten 'h' [
Knoten 'a' [
Knoten 'l' [],
Knoten 'l' [],
Knoten 'o' [] ],
Knoten ' ' [
Knoten 'w' [],
Knoten 'e' [],
Knoten 'l' [] ],
Knoten 't' [
Knoten '!' [] ] ]

Wie kann ich jetzt eine Funktion
toList :: Baum a -> [a]

schreiben, die den Baum in eine Liste umwandelt und dabei den Wert eines Knotens
vor den Wert seiner Kinder einfügt, sodass der Aufruf "toList baum" die Liste "hallo welt!" liefert?
Zum Seitenanfang    
 
Siracusa

Gepostet:
25.01.2009 17:54

   
Hallo,

Das lässt sich durch Rekursion recht leicht lösen. Deine Funktion gibt für einen Wert (Knoten x baeume) einfach x zurück und hängt daran die rekursiv berechneten Bäume baeume an. Wenn baeume == [] gibst du einfach einen Leerstring "" zurück. So als Tipp: Eine Hilfsfunktion toListMany :: [Baum a] -> [a] schreiben, die in toList für die Liste von Unterbäumen aufgerufen wird und selbst wieder für jeden Baum in der Liste toList aufruft.


Viele Grüße,

Siracusa
Zum Seitenanfang