擅长:python、mysql、java
<p>在我看来,你要把这个树转换成一个只有Id,Name和子节点的树。在这种情况下,我认为它是清理节点。在</p>
<p>要清理节点,请执行以下操作:</p>
<ol>
<li>使用原始节点的名称和Id创建一个节点。在</li>
<li>将新节点的子节点设置为原始节点子节点的已清理版本。(这是递归调用。)</li>
</ol>
<p>在代码中,这将是:</p>
<pre><code>def clean_node(node):
return {
'Name': node['Name'],
'Id': node['Id'],
'Children': map(clean_node, node['Children']),
}
>>> print map(clean_node, data)
[{'Name': 'x', 'Children': [], 'Id': 'y'}, {'Name': 'xx', 'Children': [{'Name': 'xyx', 'Children': [], 'Id': 'yxy'}], 'Id': 'yy'}]
</code></pre>
<p>我发现像这样分解递归问题比较容易——尝试使用全局变量会很快使简单的事情变得非常混乱。在</p>