擅长:python、mysql、java
<p>使用深度优先搜索查找树中每个节点的路径,然后调用<code>enumerate-paths(Path p)</code>,其中<code>p</code>是从根到节点的路径。假设路径<code>p</code>是节点数组,其中<code>p[0]</code>是根,而<code>p[n]</code>是当前节点。</p>
<pre><code>enumerate-paths(p) {
for i = 0 .. n
output p[n - i] .. p[n] as a path.
}
</code></pre>
<p>这些路径中的每个都是不同的,并且每个路径都不同于从树的任何其他节点返回的结果,因为没有其他路径以<code>p[n]</code>结尾。显然它是完整的,因为任何路径都是从一个节点到它和根之间的某个节点的。它也是最优的,因为它能准确地找到并输出每条路径一次。</p>
<p>顺序与您的稍有不同,但您始终可以创建路径列表,其中<code>A[x]</code>是长度为<code>x</code>的路径列表。然后可以按路径的长度顺序输出路径,尽管这需要O(n)存储空间。</p>