考虑我有以下树木列表:
data = [
{'id': 'a',
'x': 17,
'children': [
{'id': 'aa',
'y': 14,
'children':
[{'id': 'aaa',
'y': 14}]},
{'id': 'ab',
'y': 132}],
},
{'id': 'b',
'x': 171,
'children': [
{'id': 'ba',
'children': [
{'id:': 'baa',
'y': 4},
{'id': 'bab',
'y': 132}]}]
}
]
我现在有节点ID,并希望用它来执行以下操作。
'aa'
,我希望获得x = 17
(来自父节点'a'
)和y=14
。'bb'
,我希望获得x = 171
(来自父节点'b'
)和y=136
(儿童y
值的总和)。我想出了一个遍历树列表的递归方法,并成功找到正确的id并在之后停止搜索。它还打印一些调试,包括递归级别作为空间(我更容易实现正在发生的事情)
def tree_search(data, id, indent=''):
stop_search = False
for node in data:
if stop_search:
break
print indent + node.get('id', '')
if node.get('id') == id:
print indent + "Found id"
print indent + "gather x from father" # but who is the father or the grandfather??
print indent + "gather y from children"
return True
elif 'children' in node:
print indent + "going deeper"
stop_search = tree_search(node["children"], id, indent+' ')
但是现在我陷入了如何从父亲或祖父那里得到x(无论是谁提出第一个x)以及如何从孩子那里找到y。当每个节点知道它的孩子时,第二个似乎更容易。 关于如何继续这个的任何提示?