树中最大总和的路径

时间:2013-01-19 09:36:59

标签: algorithm tree amazon binary-tree

给定具有-ve和+ ve值的二叉树。将所有路径的froom root打印到任何节点,其中max sum.do它在O(n)中。只有一次遍历树。

努力:) 1)http://www.geeksforgeeks.org/find-the-maximum-sum-path-in-a-binary-tree/是完全不同的问题。

2)不接受O(n)+ O(n)。

我的方法。

1)

i)找到最大总和。 ii)遍历预订保持当前路径和总和。 if(curr_sum == max_sum)打印路径。

2) i)找到最大总和。 ii)遍历预订保持当前路径和总和。     if(curr_sum == max_sum)打印路径。还在节点数组Arr中保存该节点的地址。     下次当curr_sum == max_sum时,只需检查Arr []  如果路径已经打印

问题:  这将多次打印一些路径。更多的采访者想要一次遍历。这需要2.一个找到最大总和。另外打印路径。

1 个答案:

答案 0 :(得分:1)

在树上执行深度优先搜索,计算所有子路径的总和,并将它们存储在包含相等长度的子路径的已排序数组中。很容易看出,这可以在O(n)中完成,只需遍历图形一次。

结果是数组a,其中a[i]包含长度为i的路径列表。保留最大索引j的记录,并最终打印列表a[j]中的所有路径。