问题是您调用self.inorder(node.left)
,但不对结果做任何事情,结果,代码仅被执行(延迟执行得很好,这意味着未执行),并且运行时环境继续到下一行。
您需要通过传播(即 重新生成 )由以下调用生成的元素来解决该问题inorder
:
def inorder(self, node):
if node is None:
return
if node.left is not None:
for x in self.inorder(node.left) :
# you need to *re-yield* the elements of the left and right child
yield x
yield node
if node.right is not None:
for x in self.inorder(node.right) :
yield x