【发布时间】:2019-10-25 09:57:03
【问题描述】:
该代码假设返回从树的根到叶子的每条路径的列表,从左到右的顺序。具有一个子节点(一个Tip 和一个Bin)的节点不被视为叶节点。
我试着像这样写代码
paths :: Tree a -> [[a]]
paths Tip = [[]]
paths (Bin Tip x Tip) = [[x]]
paths (Bin left x right) = map (x:) (paths left ++ paths right)
但它似乎返回路径包含一个孩子的节点。这将导致Bin (Bin Tip 3 Tip) 4 Tip 上的[[4,3],[4]] 之类的路径。
【问题讨论】:
-
[] :: [a]是所有列表类型的空列表,包括嵌套列表类型(其中a ~ [b])。