擅长:python、mysql、java
<p>好吧,继承人的继承人就是继承人的继承人对吧?</p>
<pre><code># First successors
descend = G.successors(parent1)
# 2nd level successors
def allDescendants(d1):
d2 = []
for d in d1:
d2 += G.successors(d)
return d2
descend2 = allDescendants(descend)
</code></pre>
<p>要获取级别3的子体,请调用AllDescents(d2)等</p>
<p>编辑:
问题1:
<code>allDescend = descend + descend2</code>将这两个集合组合在一起,对后代的进一步级别执行相同的操作。</p>
<p>问题2:如果图中有循环,则需要首先修改代码以测试以前是否访问过该子体,例如:</p>
<pre><code>def allDescendants(d1, exclude):
d2 = []
for d in d1:
d2 += filter(lambda s: s not in exclude, G.successors(d))
return d2
</code></pre>
<p>这样,就可以将<code>allDescend</code>作为第二个参数传递给上面的函数,这样它就不会包含在将来的后代中。一直这样做,直到<code>allDescandants()</code>返回一个空数组,在这种情况下,您知道您已经浏览了整个图,然后停止。</p>
<p>既然这看起来像是家庭作业,我就让你自己想办法把这些拼凑起来。;)</p>