www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

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

Logo - DracheHaskell-Forum

franzigoth1

Gepostet:
01.12.2007 12:32

Breitensuche  
Meine Frage lautet,
wie kann man eine Haskellfunktion erstellen, die einen Binärbaum als Breitensuche in form eine Liste ausgibt?
Hat da vielleicht einer eine Idee.

Standard-Testfall
bt=(T 3 ( T 2 E (T 8 (T 3 E E) (T 4 E E))) (T 7 E E))
bslin bt == [3,2,7,8,3,4]


data BT = E | T Int BT BT
bslin::BT->[Int]

Zum Seitenanfang ICQ    
 
Siracusa

Gepostet:
01.12.2007 21:42

   
Auch hier ein Lösungsansatz: Man kann sich wieder eine Hilfsfunktion anlegen, die als erstes Argument eine Liste von Bäumen erhält, deren Startknoten-Markierungen nacheinander zu einer Liste von Zahlen zusammengesetzt werden (das ist dann die Resultatliste). Dabei werden gleichzeitig alle Unterbäume in einer zweiten Liste gesammelt. Erst wenn die erste Liste vollständig abgearbeitet ist, wird mit der Abarbeitung der zweiten Liste begonnen (die jetzt die neue erste Liste ist). Gestartet wird mit einer Liste, die nur den Ausgangsbaum enthält und einer leeren "Sammelliste".
Zum Seitenanfang