使用Gremlin在遍历树的叶子的同时找到每个节点的子节点

时间:2015-04-21 14:11:34

标签: java titan gremlin tinkerpop

假设我有一个像enter image description here

这样的树

现在盯着顶点8,我想找到顶点8的孩子,即{3,10},将它们存储在地图中并再次继续剩余顶点的过程,直到我到达叶节点(在编写查询时树的高度未知)。

我想编写一个执行上述操作的查询,并返回包含这些地图迭代器。 请帮我写这个查询。

2 个答案:

答案 0 :(得分:2)

您可以考虑tree步骤:

gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> t=new Tree();g.v(1).out.tree(t).loop(2){true}
gremlin> t
==>v[1]={v[2]={}, v[3]={}, v[4]={}}
==>v[4]={v[3]={}, v[5]={}}

我没有完全遵循您问题的预期格式部分,因此我不确定上述内容是否完全符合您的要求。您可以根据需要使用一些groovy来转换t,因为它可以完成大部分开箱即用的工作。

答案 1 :(得分:0)

在GremlinPipeLine中执行相同的查询

Tree tree = new Tree();
    new GremlinPipeline(graph).V().has("mgrNo", 814754).out("manager of").tree(tree).loop(2, new PipeFunction<LoopBundle,Boolean>() {

        @Override
        public Boolean compute(LoopBundle loopBundle) {
            return true;
        }
    }).iterate();
Iterator it = tree.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry pair = (Map.Entry)it.next();
        System.out.println(pair.getKey() + " = " + pair.getValue());

       }
    }