[Haskell-cafe] Construct all possible trees
Andrew Coppin
andrewcoppin at btinternet.com
Wed Jun 13 16:17:20 EDT 2007
Colin DeVilbiss wrote:
> On 6/12/07, Andrew Coppin <andrewcoppin at btinternet.com> wrote:
>
> Based on the sample output, I'm guessing that the desired output is
> "every tree which, when flattened, gives a permutation of a non-empty
> subset of the supplied list". This limits the output to trees with up
> to "n" leaves.
Every possible tree, using the supplied elements as leaf elements,
without ever duplicating them. (Note, however, that the initial list may
contain duplicates in the first place, so you can't just test for and
remove duplicates in the produced lists; you must avoid repeating
elements by construction.)
>> Branch (Branch (Leaf 1) (Leaf 3)) (Leaf 1),
>
> If I'm guessing the desired output correctly, this must be a typo?
Erm... yes.
> I'd be tempted to solve the "list-only" problem first (generate all
> "sub-permutations" of a list), then solve the tree problem (generate
> all "un-flattenings" of a list).
I can already create all possible 2-element trees. It seems like there
should be a way to recurse that... but without duplicating elements.
Hmm, I don't know - there's probably several correct solutions to this
problem. ;-)
More information about the Haskell-Cafe
mailing list