本文代码使用字典和集合模拟有向图结构,也可以改用其他的数据类型来实现。
def getDegrees(orientedGraph, node):
#出度
outDegree = len(orientedGraph.get(node, []))
#入度
inDegree = sum(1 for v in orientedGraph.values() if node in v)
return (inDegree, outDegree)
#模拟有向图
graph = {'a':set('bcdef'),
'b':set('ce'),
'c':set('d'),
'd':set('e'),
'e':set('f'),
'f':set('cgh'),
'g':set('fhi'),
'h':set('fgi'),
'i':set()}
#查看结果
print(getDegrees(graph, 'h'))
上面代码对应的有向图结构如下图所示。