gpt4 book ai didi

Haskell 总结通过树的所有路径

转载 作者:行者123 更新时间:2023-12-02 17:06:49 25 4
gpt4 key购买 nike

我尝试通过一棵树来总结所有路径,该树将每个级别从根到最低子节点扩展 1 到 10 倍。我的函数递归地遍历所有子项,但我遇到的问题是,当我尝试创建节点列表并在列表中执行此列表时,我变成了列表的列表的列表...列表的列表。我认为我的问题是组合步骤我尝试制作一种模式匹配方法,但是该方法应该在列表成为列表列表时比较列表,并且应该创建新列表并比较它们,如果它只是一种方式(满足列表与节点而不是带有列表的列表)不起作用。

最佳答案

summarize :: Tree a -> [[a]]
summarize Leaf = [[]]
summarize (Node a t1 t2) = do
t <- [t1, t2]
map (a:) (summarize t)

编辑:请注意,上面假设 Tree 的定义如下:

data Tree a = Leaf | Node a (Tree a) (Tree a)

编辑#2:此版本的代码可能更清晰:

summarize :: Tree a -> [[a]]
summarize Leaf = [[]]
summarize (Node a t1 t2) = do
t <- [t1, t2]
summary <- summarize t
return (a:summary)

这个版本有一个很好的特性,它可以写成列表理解:

summarize (Node a t1 t2) = [a:summary | t <- [t1, t2], summary <- summarize t]

关于Haskell 总结通过树的所有路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17503564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com