だから私はバイナリツリーを受け入れ、すべてのサブツリーのリストを返す関数を 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]
何らかの理由で、私はこの実装にやや疑問を持っています。フィードバックをいただければ幸いです。ありがとう!