小编Tea*_*man的帖子

如何在Haskell中编写N-ary树遍历函数

我需要遍历N-ary树,并在我按预订访问时向每个节点添加数字.我有这样定义的n-ary树:

data NT a = N a [NT a] deriving Show
Run Code Online (Sandbox Code Playgroud)

示例: 如果我有以下树:

let ntree = N "eric" [N "lea" [N "kristy" [],N "pedro" [] ,N "rafael" []],N "anna" [],N "bety" []]
Run Code Online (Sandbox Code Playgroud)

我想把它改造成

let ntree = N (1,"eric") [N (2,"lea") [N (3,"kristy") [],N (4,"pedro") [] ,N (5,"rafael") []],N (6,"anna") [],N (7,"bety") []]
Run Code Online (Sandbox Code Playgroud)

"Preordedness"并不重要.

我想看看如何编写一个在级别之间传递值的函数,比如如何将数字传递给后继列表以及如何将更新的数字传递给父级,并将该数字传递给其他分支.

到目前为止,我已经能够编写这样的函数:

traverse :: NT String -> String
traverse (N val []) =" "++val++" "
traverse (N val list) =val++" " ++ (concat $ map …
Run Code Online (Sandbox Code Playgroud)

algorithm tree recursion haskell functional-programming

7
推荐指数
1
解决办法
1143
查看次数