Я пытаюсь построить древовидную структуру, в которой я мог бы выбрать любой узел, и младший соответствующий дочерний элемент был бы возвращен в список.Например, если я выберу узел 1, я получу список, содержащий [5, 6, 7, 8, 9].Если выбрать узел 2, я получу [5, 6, 7].Если я выбрал узел 4, я получу только [9].Критерием для определения узлов, которые будут агрегированы, является то, что у них нет дочерних элементов.Представление древовидной структуры выглядит следующим образом:
До сих пор я пытался это реализовать:
class Node(object):
def __init__(self, value=None):
self.children = []
self.value = value
def __repr__(self):
return str(self.value)
def add_child(self, obj):
self.children.append(obj)
@property
def ChildElements(self):
return [Node(a) for a in self.children]
@property
def GetValue(self):
return self.value
def node_recurse_generator(node):
yield node.value
for n in node.ChildElements:
yield from node_recurse_generator(n)
Затем я определяю небольшую древовидную структуру:
a = Node('a')
b = Node('b')
c = Node('c')
d = Node('d')
a.add_child([b, c])
c.add_child(d)
list(node_recurse_generator(a))
##Yields ['a', [b, c]]
Может быть, есть лучший способ сделать это?