在字典树中查找根

Find root in dictionary-tree

我有一个这样的字典树:

{ b : [e], a : [b,c], c : [], e : []}

即使我的字典很长,我如何才能快速找到词根(在此示例中为“a”)?

遍历邻接表,将每个"from"个节点放入一组源节点,将其对应的每个"to"个节点放入一组目的节点。

从一组源中减去一组目的地将产生以下结果之一:

  • 一个空集 - 这意味着你的邻接表不代表一棵树或一片森林,
  • 具有多个节点的集合 - 这意味着您的邻接列表代表一片森林,或者
  • 只有一个项目的集合 - 这是您的邻接表所表示的树的根。

以下是您的示例的工作原理:

  • source: { b, a, c, e }
  • destination: { e, b, c }
  • source \ destination: { a }

在您的示例中,未定义变量 (a、b、c、e)。假设您可以用字符串(甚至整数)替换它们:

d = {'b':['e'], 'a':['b','c'], 'c':[], 'e':[]}

root = set(d).difference(*d.values()).pop()
print(root)

--> a