我正在尝试构建一个树结构,可以在其中选择任何节点,并且最低的对应子级将返回到列表中。例如,如果选择节点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]]
也许有更好的方法吗?