我想将N-ary树压缩成如下列表:
P
______|______
| | |
C1 C2 C3 => [P,C1,C4,C2,C3,C5,C6]
| ___|____
C4 | |
C5 C6
这是节点类:
class Node(object):
def __init__(self, data):
self.data = data
self.children = []
def add_child(self, obj):
self.children.append(obj)
答案 0 :(得分:1)
class Node(object):
...
def flatten(self):
return [self.data] + sum(
(c.flatten() for c in self.children),
[],
)
不一定是最容易理解的,但我想尝试解决单线。
答案 1 :(得分:0)
这就是我最终做的,这是有效的。
class Node(object):
def __init__(self, data):
self.data = data
self.children = []
def add_child(self, obj):
self.children.append(obj)
def flatten(self):
out = [self]
for child in self.children:
out += child.flatten()
return out
我尝试了一段时间来达到return [self] + [child.flatten() for child in self.children]
这样的单线程解决方案,但它从未像创建嵌套列表那样起作用。如果有人知道更简洁的方式,请分享。