2016-12-26 118 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