可能为时已晚,但在解决之前我无法入睡:
我有一棵树和一些父母,他们有孩子,也有孩子等等。
现在我需要一个函数来从树中获取所有节点。
这是目前有效的方法,但只有一层深度:
def nodes_from_tree(tree, parent):
r = []
if len(tree.get_children(parent)) == 0:
return parent
for child in tree.get_children(parent):
r.append(nodes_from_tree(tree, child))
return r
然后我尝试r
通过,所以它会记住孩子,但我不止一次使用该函数并r
累积存储所有节点,尽管我将其设置为r=[]
:
def nodes_from_tree(tree, parent, r=[]):
r = []
if len(tree.get_children(parent)) == 0:
return parent
for child in tree.get_children(parent):
r.append(nodes_from_tree(tree, child, r))
return r
编辑:这是树结构:
parent1 parent2 parent3
| | |
| | |
child | |
| |
+--------------+ |
| | | |
child child child |
| |
+---+---+ |
child child +---+---+
| |
child |
|
+-----+-----+-----+
| | | |
child child child child
可用方法:
tree.get_parents() # returns the nodes of the very top level
tree.get_children(node) # returns the children of parent or child