Hello I'm a haskell newbie that tries to create a tree with arbitary numbers of childs. I create the data structure but i can't do anything on it can someone please help me with a small function that sums the values of the leafs, so i don´t loose my hair so fast. The datastructure looks like this and a binary tree built with it would look like this: data GeneralTree = Nil | Node (Integer,[GeneralTree]) tree = (20, [ (-20,[(30,[Nil]),(20,[Nil])]), (40,[(65,[Nil]),(-40,[Nil])]) ] ) Best regards Martin Gutsfsson
Martin Gustafsson schrieb folgendes am Mon, Feb 26, 2001 at 03:05:50PM +0100:
Hello
I'm a haskell newbie that tries to create a tree with arbitary numbers of childs. I create the data structure but i can't do anything on it can someone please help me with a small function that sums the values of the leafs, so i don´t loose my hair so fast.
The datastructure looks like this and a binary tree built with it would look like this:
data GeneralTree = Nil | Node (Integer,[GeneralTree])
treeSum Nil = 0 treeSum Node (s, subtrees) = s + sum (map treeSum subtrees) More general you may define data GTree a = Nil | Node a [Gtree a] accumTree : (a -> b -> b) -> b -> Gtree a -> b accumTree f init Nil = init accumTree f init Node x ts = let rs = map accumTree f init ts r = foldl f init rs in foldl f init [x, r] sumTree = accumTree + 0 Best regards -- Stefan Karrmann You can't push on a rope.
participants (2)
-
Martin Gustafsson -
Stefan Karrmann