2016-12-26 111 views
-1

我是Python生成器的新手。在这里我想做一个树的后序遍历。我发现其他人的代码如下。我不太了解它,相反,我想把它写成就像后者一样。那么有人可以告诉我为什么我错了吗?Python生成器遍历树

def _loopallchildren(parent): 
    for child in parent.children: 
     if child.children: 
      for subchild in _loopallchildren(child): 
       yield subchild 
     yield child 

错误代码:

def _loopallchildren(parent): 
    for child in parent.children: 
     if child.children: 
      _loopallchildren(child) 
     yield child 

回答

3

对于仅仅调用从外面_loopallchildren(root)没有做任何事的没有做任何事情一样的道理。你必须迭代发生器来利用它。

在Python≥3.3中,您可以使用yield from _loopallchildren(child)

+0

这是有道理的。非常感谢。 – daydayup