递归树函数的实现以收集最高级别的节点

时间:2018-09-26 15:59:50

标签: python oop recursion tree

我正在尝试构建一个树结构,可以在其中选择任何节点,并且最低的对应子级将返回到列表中。例如,如果选择节点1,则会得到一个包含[5、6、7、8、9]的列表。如果选择节点2,则得到[5,6,7]。如果选择节点4,则只会得到[9]。定义要聚合的节点的标准是它们没有任何子代。树形结构表示如下:

Tree structure representation

到目前为止,我尝试实现它:

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]]

也许有更好的方法吗?

0 个答案:

没有答案