我有一棵二叉树。我需要编写Java递归方法,它将给出两个节点之间最长的路径。找到任意两个节点之间最长的路径
例如,如果下面的树是7(7-8-5-13-15-18-16-17),则最长路径。
http://img294.imageshack.us/img294/130/treeb.jpg
什么是解决这个问题的办法?
(方法:公共静态INT longestPath(节点n))
我有一棵二叉树。我需要编写Java递归方法,它将给出两个节点之间最长的路径。找到任意两个节点之间最长的路径
例如,如果下面的树是7(7-8-5-13-15-18-16-17),则最长路径。
http://img294.imageshack.us/img294/130/treeb.jpg
什么是解决这个问题的办法?
(方法:公共静态INT longestPath(节点n))
考虑到这是家庭作业我看Depth-First search和Breadth-First search。
随着深度优先
太棒了!尽管一开始就很难弄清楚! – letsc 2011-07-27 21:11:11
这里的偏好是一个线索:
首先,就可以解决这个简单的问题?
从整数列表中查找最大值。
其次,每当节点有子节点时都会发生新的路径。
另外请注意,problem是NP-complete,所以你可能将无法找到多项式算法。
没有。阅读文章:对于非循环图,它是P.树是非循环的。充其量,这是一个评论。 – polygenelubricants 2010-06-26 11:52:02
首先,您可以编写一个函数,该函数返回树的高度,该长度等于最长路径的长度。
请发表任何你已经写的代码,我们会帮助。但是,我(一)不会给你一个解决方案。它会挫败你家庭作业的目的......这是为了让你学会为自己编写程序。 – 2010-06-26 10:16:11
你可以在这里找到一些帮助:http://stackoverflow.com/questions/1664390/how-to-create-a-linked-list-of-nodes-that-are-contained-in-the-max-depth -of-a-bin – letsc 2011-07-27 21:15:10