返回二叉树的所有叶子很简单:Haskell:返回一个多路树的所有叶子?
data BinTree a = Empty | Node (BinTree a) a (BinTree a) deriving (Eq, Show)
getLeaves :: BinTree a -> [a]
getLeaves Empty = []
getLeaves (Node left current right) = [current]++getLeaves left++getLeaves right
那如果树不是二进制而是多路树的情况下(即在树中的每个节点可以有任意数量的子节点和叶子)?
data MWTree a = Empty | Node [MWTree a] deriving (Eq, Show)
我不想找人为我发布解决方案;我只是不确定通用Haskell概念可能值得学习解决这种类型树编写getLeaves
的问题。