Gepostet: |
Kinder bei Knoten des Binärbaums bestimmen | ||||||||||
[code data BTree a = Nil | Node a (BTree a) twoChildren :: BTree a -> Bool twoChildren (Node n) |(Node n) = `mod` n 2 == 0 =True |otherwise = Nill ][ /code] meine Funktion soll entscheiden ob jeder Knoten des Binärbaums genau zwei Kinder hat oder nicht. Aber irgenbdwie komme ich mit der Schreibweise des Codes nicht klar. |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Bei deinem Baum kann ein Knoten gar keine 2 Kinder haben, meintest du eventuell:data BTree a = Nil | Node a (BTree a) (BTree a)? ohne es ausprobiert zu haben, müsste es das jenes erledigen: Annahme: Blätter sind die jenigen Zahlen, die 2 Nills dranhängen haben, Knoten alles andere
two Children nimmt einen Typ \\\"BTree\\\", also muss du auch dagegen matchen. Entweder \\\"Nill\\\", oder etwas der Forum \\\"Node a (BTree a) (BTree a)\\\" wobei du auch hierbei wieder \\\"BTree a\\\" durch Node .... ersetzen kann, sowie ich es in der 2. und 3. zeile mache, um zu überprüfen, ob (genau) ein Teilbaum Links oder Rechts vorliegt: (Node _ _ _). Ich hätte auch einfach \\\"baum\\\" stattdessen schreiben können, allerdings wüsste ich dann nicht, ob der Nill ist oder (Node .... ) Hoffe das hilft erstmal, hab grad nicht so viel Zeit. :) |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Vielen Dank | |||||||||||
Zum Seitenanfang | |||||||||||