java在neo4j图上执行DFS
我有一个具有以下结构的数据库。
属性节点的类型为
create (A:Property {value:"abc"})
如何执行dfs,以便能够打印图形中的所有值。顺序为A->;B->;E->;F->;C->;G->;H->;D->;I->;J
关系r是向下的(单向),没有属性。我试过这个link,但看起来很复杂
有没有更简单的方法在现有的Neo4j数据库上执行简单的dfc
你可以在下面搜索框中键入要查询的问题!
我有一个具有以下结构的数据库。
属性节点的类型为
create (A:Property {value:"abc"})
如何执行dfs,以便能够打印图形中的所有值。顺序为A->;B->;E->;F->;C->;G->;H->;D->;I->;J
关系r是向下的(单向),没有属性。我试过这个link,但看起来很复杂
有没有更简单的方法在现有的Neo4j数据库上执行简单的dfc
# 1 楼答案
您链接到的链接非常详细,涵盖了使用Neo4j强大的遍历API可以执行的所有不同操作
我想你所要做的就是:
应该打印
A->B->E->F->C->G->H->D->I->J->
通过不在最后一个节点添加箭头,可以使print语句更智能,但我将留给您
编辑
在我自己尝试代码之后,我得到了深度优先搜索,但是迭代器的顺序是错误的。它似乎任意选择了要首先行走的子节点。所以我得到了像
A->D->J->I->C->H->G->B->F->E->
这样的输出因此,您必须对
TraversalDescription
的返回路径进行排序,该路径具有sort(Comparator<Path> )
方法为了匹配您想要的遍历,我按照节点属性对路径进行排序,该属性为节点提供了名称,我称之为“id”。以下是我更新的遍历代码:
其中,PathComparatorByName是我编写的一个比较器,它根据路径中遍历的节点按名称进行词汇排序:
现在使用比较器重新运行它将输出: