我有两个类:一个是可以有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转换为树?
由于
答案 0 :(得分:5)
不确定。 Tree
的结构允许我们将两个子树放入列表中:
convert EmptyBin = EmptyTree
convert (Node a l r) = Tree a [convert l,convert r]
如果你想转换另一种方式,那可能会更复杂,这取决于你想如何分支一长串子树,但是你可以使用Ord a
上下文来帮助你。