【发布时间】:2018-07-23 18:11:17
【问题描述】:
我有一个具有以下结构的集合 [{:a 0} {:b 1} {:c 1} {:d 2} {:e 3} {:f 2}]。基本上,它是一棵树,其中向量的一个元素是一个节点。数字表示的是父子关系。因此,元素 {:a 0} 是主父元素(没有父元素),而 {:b 1}、{:c 1} 是 {:a 0} 的子元素。此外,{:d 2} 是 {:c 1} 的子代。
我想要的是构造一个具有以下结构的列表或向量(此时无关紧要): [{:a {:b nil :c {:d {:e nil} :f nil}}}]。
如何做到这一点?
【问题讨论】:
-
到目前为止你有什么尝试?
-
你怎么知道
d是b或c的孩子? (f的问题相同) -
老实说,我没有。但是,我的想法是让函数查看每个元素,并查看前一个元素的值是否小于 1。如果是这样,它就是它的父级。如果不是,那么我会查看前两步的那个,依此类推。但我无法构建这样的功能。
-
@jas。在我感兴趣的结构中,d 是 c 的子元素,因为它是最接近 d 的元素。
-
有道理 --- 我现在可以看到它正在按照深度优先路径构建树。
标签: dictionary vector clojure