首页 > 解决方案 > 有没有办法只获取最深层的节点?

问题描述

我有一个带有“人”节点的图,一些节点之间的“父子”基本关系,以及可传递的“后代”关系。

对于一个特定的“人”,我想得到图表只知道最年长的“祖父母”。这意味着 - 他们不会为任何其他节点播放“孩子”。

什么是实现这一目标的好方法?

谢谢你

标签: vaticle-typedbvaticle-typeql

解决方案


假设:

  • 每个节点有 2 个父节点
  • 图是非循环的

首先,读取所有边并将两个父母添加到parent字典中。这样parent[some_id]就会有两个父母。然后像这样调用递归函数:

def get_grandpa_age(x):
  if not parent[x.id]:
    return x.age
  mother_side = get_grandpa_age(parent[x.id][0])
  fathers_side = get_grandpa_age(parent[x.id][1])
  return max(mothers_side, fathers_side)

get_grandpa_age(some_entity)

推荐阅读