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.


_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to