实现了一个递归树函数来收集最高级别的节点

2024-04-23 18:40:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试构建一个树结构,在这个树结构中,我可以选择任何节点,最低的对应子节点将返回到一个列表中。例如,如果我选择节点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]]

也许有更好的方法?你知道吗


Tags: selfaddnodechild列表return节点定义