Java 找到树的最大深度?

Java 找到树的最大深度?,java,Java,我有给定形式的路线图 (a d) (a b) (b a) (b c) (b e) (b f) (c b) (d a) (e b) (e g) (g e) (g f) (f g) (f b) [其中(a,d)表示记录a连接到记录d] 从图形结构连接所有这些。我想找到图形结构的最大深度。这必须使用java实现 只需使用深度优先搜索,并保留访问节点的地图(以避免循环)。只要下一个孩子还没来,就再深入一点。返回1+子深度(叶节点中为0) 你试过了吗?给我们看看你试过了什么。所以他不是来做作业的。尽管如

我有给定形式的路线图

(a d)
(a b)
(b a)
(b c)
(b e)
(b f)
(c b)
(d a)
(e b)
(e g)
(g e)
(g f)
(f g)
(f b)
[其中(a,d)表示记录a连接到记录d]


从图形结构连接所有这些。我想找到图形结构的最大深度。这必须使用java实现

只需使用深度优先搜索,并保留访问节点的地图(以避免循环)。只要下一个孩子还没来,就再深入一点。返回1+子深度(叶节点中为0)

你试过了吗?给我们看看你试过了什么。所以他不是来做作业的。尽管如此,如果你用谷歌搜索的话,我相信互联网上有足够的算法。我已经试过了。非常接近,但最后出现异常。不知道如何纠正。如果(a b)和(b a)如果是连接的,则有一个圆圈表示此结构不是树。然后向我们展示您尝试的内容以及ofc以及例外情况,但我的图形结构中没有定义的根节点,因此我不知道从何处开始DFS。如果您没有显式根,并且仍然希望找到最大距离,则可能必须运行它每次使用不同的根并比较值。最大距离不会给出图形结构的深度。这只是给出了可能的最长路径,这远远超过了图形的深度@切卡伊只是试图解释深度优先的思想,没有一个具体的根源;)。图形的“问题”是,即使我们将每个
(xy)
(yx)
减少为两个节点之间的单个连接,您仍然有一个循环
(b e g f b)
。因此,我想没有简单的深度。我能想到的唯一一件事是树分解,它可能允许您执行此类请求(另请参见树宽和树深)。这只是一个示例。在现实中,我有数千个这样的条目,它基本上是整个国家的路线网络,我需要一个大概的深度。树分解将过于复杂。