您可以使用successors
方法。如果您的DiGraph实例称为G,并且红色节点的索引为0,则可以采用广度优先搜索方法,如下所示:
import networkx as nx
# Construct graph from example image, all edges pointing away from source
G = nx.DiGraph()
G.add_path([0,1,2,3,4])
G.add_path([1,5])
G.add_path([3,6])
G.add_path([2,7,8])
# Find first with 2 neighbors
neighbors = G.successors(0)
for n in neighbors:
nneighbors = set(G.successors(n))
if len(nneighbors) == 2:
print "Found", n
break
neighbors.extend(nneighbors)
neighbors
方法在networkx的DiGraph中与successors
方法是可互换的。如果您想为每个节点计算其入边数量,请在计算时将G.predecessors(n)
添加到nneighbors
集合中,但记住在扩展neighbors
时不要将其包括在该集合中。代码如下:
# Find first with 2 neighbors
neighbors = G.successors(0)
for n in neighbors:
if len(G.predecessors(n)+G.successors(n)) == 2:
print "Found", n
break
nneighbors = set(G.successors(n))
neighbors.extend(nneighbors)