给定具有-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.一个找到最大总和。另外打印路径。答案 0 :(得分:1)
在树上执行深度优先搜索,计算所有子路径的总和,并将它们存储在包含相等长度的子路径的已排序数组中。很容易看出,这可以在O(n)中完成,只需遍历图形一次。
结果是数组a
,其中a[i]
包含长度为i
的路径列表。保留最大索引j
的记录,并最终打印列表a[j]
中的所有路径。