2010-06-26 149 views
3

我有一棵二叉树。我需要编写Java递归方法,它将给出两个节点之间最长的路径。找到任意两个节点之间最长的路径

例如,如果下面的树是7(7-8-5-13-15-18-16-17),则最长路径。

http://img294.imageshack.us/img294/130/treeb.jpg

什么是解决这个问题的办法?

(方法:公共静态INT longestPath(节点n))

+4

请发表任何你已经写的代码,我们会帮助。但是,我(一)不会给你一个解决方案。它会挫败你家庭作业的目的......这是为了让你学会为自己编写程序。 – 2010-06-26 10:16:11

+0

你可以在这里找到一些帮助: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

回答

0

这里的偏好是一个线索:

首先,就可以解决这个简单的问题?

从整数列表中查找最大值。

其次,每当节点有子节点时都会发生新的路径。

0

另外请注意,problem是NP-complete,所以你可能将无法​​找到多项式算法。

+3

没有。阅读文章:对于非循环图,它是P.树是非循环的。充其量,这是一个评论。 – polygenelubricants 2010-06-26 11:52:02

1

首先,您可以编写一个函数,该函数返回树的高度,该长度等于最长路径的长度。

相关问题