擅长:python、mysql、java
<p>您不需要写下您可以应用于数据的假设有多强(如果它始终是正确的树)。所以我的代码检查了一些条件,使其不在无限循环中。你知道吗</p>
<pre class="lang-py prettyprint-override"><code>def find_root(pr_list, child):
if len(pr_list) == 0:
return None
child_translate_dict = {x.child: x for x in pr_list}
potential_root = child
count = 0
while count < len(pr_list):
if potential_root not in child_translate_dict:
return potential_root
else:
potential_root = child_translate_dict[potential_root].parent
count += 1
return None
</code></pre>
<p>和更短的版本</p>
<pre class="lang-py prettyprint-override"><code>def find_root(pr_list, child):
child_translate_dict = {x.child: x for x in pr_list}
while child in child_translate_dict:
child = child_translate_dict[potential_root].parent
return child
</code></pre>