python 深度遍历

class Node:
    def __init__(self, value):
        self._value = value
        self._children = []

    def __repr__(self):
        return 'Node(!{r})'.format(r=self._value)

    def add_child(self, node):
        self._children.append(node)

    def __iter__(self):
        # print("iteration")
        return iter(self._children)

    def depth_first(self):
        yield self
        for c in self:
            yield from c.depth_first()


if __name__ == '__main__':
    root = Node(0)
    child1 = Node(1)
    child2 = Node(2)
    root.add_child(child1)
    root.add_child(child2)
    child1.add_child(Node(1.1))
    child1.add_child(Node(1.2))
    child2.add_child(Node(2.1))
    for ch in root.depth_first():
        print(ch)

发现一个python深度遍历的巧妙写法

展开阅读全文

没有更多推荐了,返回首页