擅长:python、mysql、java
<p>或者,使用实例检查循环</p>
<p>如果节点没有子节点,则生成器生成节点作为基本情况,否则生成另一个生成器沿树向下移动。这是警告吗节点.子节点从左到右排列。你知道吗</p>
<pre><code>def leafs(node):
if len(node.children) == 0:
yield node
else:
for child in node.children:
yield leafs(child)
</code></pre>
<p>…还有一堆发电机的回路。。。当我写的时候,它变得更难看了-我想你可以把它清理干净一点,当它是真的。。。你知道吗</p>
<pre><code>current_node = leafs(a)
stack = []
last_node = None
while True:
if isinstance(current_node, types.GeneratorType):
stack.append(current_node)
current_node = current_node.next()
else:
if last_node and last_node != current_node:
last_node.nextToken = current_node
current_node.prevToken = last_node
last_node = current_node
try:
current_node = stack[-1].next()
except StopIteration:
stack.pop()
except IndexError:
break
</code></pre>