【发布时间】:2015-02-20 11:16:27
【问题描述】:
我使用 Clojure Zipper 创建了以下图表
A
/ | \
B C D
/ \
E F
使用以下代码:
(require '[clojure.zip :as z])
(def g (z/vector-zip ["A" ["B" "C" "D"["E" "F"]]]))
现在我想在 d3 中创建一个可视化,所以我想以 EDN 格式表示图形,例如,
[{:from "A" :to "B"}
{:from "A" :to "C"}
{:from "A" :to "D"}
{:from "D" :to "E"}
{:from "D" :to "F"}]
我试过了
(loop [t g]
(if-not (z/end? t)
(do
(if-not (z/branch? t)
(println {:from (-> t (get 1) :ppath :l) :to (z/node t)})
)
(recur (z/next t))
)
)
)
唯一的问题是子 E & F,我无法追踪它的父节点 D。
【问题讨论】:
-
["A" ["B" "C" "D"["E" "F"]]]不代表你认为的vector-zip的树 -
您能以适当的方式回复吗? @cgrand see this post
-
vector-zip 无法遍历你想要的树。
["A" ["B" "C" "D"["E" "F"]]]代表一棵有两个孩子的树:"A"(一个叶子)和["B" "C" "D"["E" "F"]](一个有 4 个孩子的子树:3 个叶子和一个本身有两个叶子"E"和"F"的子树)。跨度> -
其中一个答案是否解决了您的问题?