使用java深度优先搜索

时间:2009-09-16 09:47:41

标签: java tree breadth-first-search depth-first-search

我想使用java实现DFS(深度优先搜索)和BFS。

java是否有内置的树数据结构,我可以读取吗?或者我可以使用的任何其他东西?

4 个答案:

答案 0 :(得分:4)

查看提供免费java图库的http://www.jgrapht.org/。使用此库可以创建所有类型的图形,并且由于树只是图形的子集,因此您还可以使用此库创建树。使用此库可以轻松实现DFS(或BFS),也可以使用库提供的算法。但是,实施DFS(或BFS)是一个很好的练习。

祝你好运!

答案 1 :(得分:2)

您可以使用DefaultMutableTreeNode来构建数据结构。它包含方法breadthFirstEnumeration()depthFirstEnumeration(),并允许您通过calilng setUserObject(Object)将数据附加到每个节点。尽管部分javax.swing.tree包这是“模型”代码,因此没有任何直接的UI代码依赖。

答案 2 :(得分:1)

假设你不想在你的结构中重复,那么TreeSet是一个不错的起点。您可以免费获得DFS(iterator()),并且可以使用NavigableSet接口来构建BFS。

答案 3 :(得分:0)

不,没有内置结构。鉴于Java基础库拥有一切,它是疯狂的,没有相当于Data.Tree

最接近的是java.util.TreeSet,它被设计为Set而不是Tree(还有swing JTree,但它对你没用)。