所以,我有一个类型的函数:
genTree :: Node -> [Nodes]
给定一个节点,此函数会生成树中该节点的子节点集。该函数可以再次应用于这些子节点以生成它们的子节点,直到最终生成一个没有子节点的节点,即 genTree 返回 [] 的节点。
我想做的是,给定一个起始节点,生成树中以其为根的所有叶节点的列表。
有什么建议吗?
最佳答案
Martijn 答案中的函数生成树中所有节点的列表。您可以使用此列表并过滤掉没有子节点的节点来获取叶子:
nodes root = root : concatMap nodes (genTree root)
leaves root = filter (null . genTree) (nodes root)
如果您愿意,您还可以将这两个函数合并为一个,直接生成叶子列表:
leaves node
| null children = [node]
| otherwise = concatMap leaves children
where children = genTree node
关于haskell - 寻找归纳定义树的叶子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1237566/