Я хочу сгенерировать все пути от каждого листа до корня в дереве. Я хотел бы сделать это с генераторами, чтобы сохранить память (дерево может быть большим). Вот мой код:
def paths(self, acc=[]):
if self.is_leaf():
yield [self.node]+acc
for child in self.children:
child.paths([self.node]+acc)
Но это не работает. Зачем? Вызванный в корне, он пересекает дерево сверху вниз, собирая узлы в «акк». "acc" должен быть возвращен в каждом листе ...
is_leaf () - true, если self.children пусто.