gpt4 book ai didi

algorithm - 使用 corecursion 遍历树

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:32:40 25 4
gpt4 key购买 nike

我正在尝试使用非平凡(即非斐波那契数列)但易于管理的示例找出 Clojure 中的 corecursion。显然可以用 corecursion 实现二叉树遍历。维基百科有一个我无法理解的 Python 示例。

如何在 Clojure 中实现它?假设我正在寻找 BFS,但它可以是任何顺序。

这是我目前所拥有的:

(defstruct tree :val :left :right)

(def my-tree (struct tree 1 (struct tree 2) (struct tree 3 4 5)))

(def bfs (lazy-cat [my-tree] (map #(:left %) bfs) (map #(:right %) bfs) ))

(println (take 4 bfs))

不幸的是,它似乎一直向左走,忽略了右分支。

最佳答案

假设 Michal 的代码执行您想要的操作,这也有效:

(defn bftrav [& trees]
(when trees
(concat trees
(->> trees
(mapcat #(vector (:left %) (:right%)))
(filter identity)
(apply bftrav)))))

关于algorithm - 使用 corecursion 遍历树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3312608/

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