将BinaryTree转换为树?

时间:2015-02-14 01:13:20

标签: haskell

我有两个类:一个是可以有N个子树的树,而BinaryTree最多可以有两个子树。

这些类的定义如下:

data Tree a = EmptyTree | Tree a [Tree a] deriving (Show, Ord, Eq)
data BinTree a = EmptyBin | Node a (BinTree a) (BinTree a) deriving (Show, Ord, Eq)

有没有办法将BinaryTree转换为树?

由于

1 个答案:

答案 0 :(得分:5)

不确定。 Tree的结构允许我们将两个子树放入列表中:

convert EmptyBin = EmptyTree
convert (Node a l r) = Tree a [convert l,convert r]

如果你想转换另一种方式,那可能会更复杂,这取决于你想如何分支一长串子树,但是你可以使用Ord a上下文来帮助你。