擅长:python、mysql、java
<p>如果您可以相信每个<code>BrowseNode</code>都有一个<code>BrowseNode</code>子代或没有,这很简单:</p>
<pre><code>def deepest(root, tag):
descendant = root.find(tag)
if descendant:
return deepest(descendant, tag)
return root
</code></pre>
<p>(你可以说得更简洁些,但我想让逻辑尽可能地清晰明了。)</p>
<p>如果一个<code>BrowseNode</code>可能有2个或多个<code>BrowseNode</code>子代,并且必须找到最深的一个,则必须修改它以执行深度优先搜索。这并不难;您只需使<code>deepest</code>返回<code>(level, node)</code>而不是{<cd7>},使用<code>find_all</code>代替{<cd9>},然后执行<code>max(deepest(descendant, tag) for descendant in descendants)</code>。在</p>