gpt4 book ai didi

.net - 中序遍历树并将给定函数应用于所有节点

转载 作者:行者123 更新时间:2023-12-02 09:08:39 24 4
gpt4 key购买 nike

我写了一个中序树遍历函数:

let rec inOrder (tree: BinTree<'a>) : 'a list =
match tree with
| Leaf -> []
| Node(x,l,r) -> (inOrder l) @ [x] @ (inOrder r)

现在我想使用这个函数来“映射”所有笔记并应用作为参数给出的函数。它应该接受一个函数和一棵树,然后返回一棵树。这是我到目前为止所拥有的:

let mapInOrder f t = 
inOrder t
|> Map.ofList

例如,如果我向函数提供以下输入:

mapInOrder float (Node(1,Node(2,Leaf,Leaf),Node(3,Leaf,Leaf)));;

我想要输出:

(Node(1.0,Node(2.0,Leaf,Leaf),Node(3.0,Leaf,Leaf)))

最佳答案

要将函数映射到List,请使用函数List.map:

let mapInOrder f t = 
inOrder t
|> List.map f

但是这个函数会产生一个列表作为输出。您的示例将产生:

[ 1.0 ; 2.0 ; 3.0 ]

要生成您期望的输出,您的 mapInOrder 应该在将函数应用于每个元素后遍历树,生成另一棵树。

关于.net - 中序遍历树并将给定函数应用于所有节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55000670/

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