首页 > 解决方案 > 结合递归和收益进行树遍历

问题描述

我正在尝试结合递归和产量来按顺序遍历一棵树

这就是我目前所拥有的。但是,当我尝试遍历树时,它似乎只遍历根节点

class Tree:
    ...
    def post_order(self, node: TreeNode):
        """Yield next node in post order from node"""
        for child in node.get_children():
            self.post_order(child)
        yield node


if __name__ == '__main__':
    root = TreeNode('root')
    depth1a = TreeNode('1a')
    depth1b = TreeNode('1b')
    root.add_children(depth1a, depth1b)
    tree = Tree(root)
    for node in tree.post_order(root):
        print(node.get_element())

当我运行代码时,它只会打印出来

root

这是第一个节点的元素,而不是我想要的

1a
1b
root

有谁知道我做错了什么?

感谢大家

标签: pythonrecursiongeneratoryield

解决方案



推荐阅读