Gepostet: |
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 | ||||||||||
Gepostet: |
|||||||||||
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 | |||||||||||