我想展平一棵看起来像这样的树:
> data Tree a = Leaf a
> | Fork a [Tree a]
> | Root [Tree a]
可能的例子:
Root [Fork 'a' [Fork 'b' [Leaf 'c'],Fork 'c' [Leaf 'b']],Fork 'b' [Fork 'a' [Leaf 'c'],Fork 'c' [Leaf 'a']],Fork 'c' [Fork 'a' [Leaf 'b'],Fork 'b' [Leaf 'a']]]
应该成为
["abc","acb","bac","bca","cab","cba"]
解释原因:我尝试构建一种排列树。我编写了一个函数permute :: String -> Tree Char
来将字符串的所有可能排列可视化为树。但我不知道如何把这种树弄平。谢谢你的帮助。