所以我试图在 Haskell 中实现一个函数,它接受二叉树并返回所有子树的列表,其中顺序和重复无关紧要,但所有子树必须至少存在一次。这是我的代码:
data BinTree a = Empty | Node (BinTree a) a (BinTree a) deriving (Eq,Show)
subtrees :: BinTree a -> [BinTree a]
subtrees Empty = [Empty]
subtrees (Node tL x tR) = [Node tL x tR] ++ subtrees tL ++ subtrees tR
这是我的数据集
(Node (Node (Node (Node Empty 1 Empty) 1 Empty) 3 Empty) 4 (Node Empty 2 Empty))
这是我的结果
[Node (Node (Node (Node Empty 1 Empty) 1 Empty) 3 Empty) 4 (Node Empty 2 Empty),
Node (Node (Node Empty 1 Empty) 1 Empty) 3 Empty,Node (Node Empty 1 Empty) 1 Emp
ty,Node Empty 1 Empty,Node Empty 2 Empty]
出于某种原因,我对这个实现有些怀疑,如果有任何反馈,我将不胜感激!谢谢!