Python (yield): все пути от листьев до корня в дереве

Я хочу сгенерировать все пути от каждого листа до корня в дереве. Я бы хотел сделать это с генераторами, чтобы сэкономить память (дерево может быть большим). Вот мой код:

def paths(self, acc=[]):
    if self.is_leaf():
        yield [self.node]+acc

    for child in self.children:
        child.paths([self.node]+acc)

Но он не работает. Зачем? Вызванный из корневого каталога, он просматривает дерево сверху вниз, собирая узлы в "acc". "acc" должен быть возвращен в каждом листе ...

is_leaf () истинно, если self.children пуст.

5
задан jsmith 20 August 2011 в 21:16
поделиться