返回二叉樹的所有葉子很簡單: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
的問題。