手遅れかもしれませんが、解決するまで眠れません:
私はいくつかの親を持つツリーを持っています。親には子供がいて、子供もいます。
ここで、ツリーからすべてのノードを取得する関数が必要です。
これは現在機能しているものですが、深さは 1 レベルのみです。
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