【发布时间】:2015-04-28 17:06:55
【问题描述】:
假设我们有一个带有单个叶节点 leafN 的 DAG。每个节点都是一个包含父节点列表的对象。节点类可以是 class Node(Object, List[Node]。
如何从leafN构造DAG?
例如,给定叶节点 leafD 有两个父节点,leafD(Object@123, List(leafC(leafA(null)), leafB(leafA(null)))) 它的 DAG 将是:
leafA
/ \
leafB leafC
\ /
leafD
即leafA(leafB(leafD(null)), leafC(leafD(null)))(为了清楚起见,我忽略了来自每个节点的对象。)
简而言之,我们有一个带有父指针的叶节点,它本身也有父指针,最后,在应用算法之后,我们想要一个 root 节点,它带有指向子节点的指针,而子节点还有指向子节点的指针.
代码不是必需的,算法或任何链接就足够了。
【问题讨论】:
-
你是什么意思“创建”你的意思是创建一个可视化的吗?
-
@amit:不,不是可视化。我想要来自
leafD(42, List(leafC(leafA(null)), leafB(leafA(null))))的leafA(leafB(leafD(null)), leafC(leafD(null)))。忽略每个节点的整数,这些是简单的部分。
标签: algorithm directed-acyclic-graphs