gpt4 book ai didi

recursion - F# 如何展平二叉搜索树

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

我有一棵树,结构如下:

type 'a Tree =| Leaf of 'a| Branch of 'a Tree * 'a Tree

我正在我的树上使用连续传递风格的尾递归并尝试将其展平。

let rec loop tree k acc = 
match tree with
| Leaf v -> v :: acc
| Branch (tl,tr) -> loop tl (loop tr k) acc
loop xs id []


(Branch (Branch (Leaf 1.0,Leaf 2.0),Branch (Leaf 3.0,Leaf 4.0)))

这仅返回[1.0]

但是我只得到树中的第一片叶子,我的函数不适用于整个树。我怎样才能实现这一目标?

最佳答案

您正在传递一个延续,但您没有在任何地方调用它。试试这个:

let rec loop tree k acc = 
match tree with
| Leaf v -> k (v :: acc)
| Branch (tl,tr) -> loop tl (loop tr k) acc

然后loop xs id []产生[4.0; 3.0; 2.0; 1.0]

关于recursion - F# 如何展平二叉搜索树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53210613/

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