【发布时间】:2009-09-16 09:47:41
【问题描述】:
我想使用 java 实现 DFS(深度优先搜索)和 BFS。
java 是否有内置的树数据结构,我可以轻松使用?或者其他我可以使用的东西?
【问题讨论】:
-
t@adamski。谢啦。我不知道我的投票帮助了某人。从现在开始我会
标签: java tree breadth-first-search depth-first-search
我想使用 java 实现 DFS(深度优先搜索)和 BFS。
java 是否有内置的树数据结构,我可以轻松使用?或者其他我可以使用的东西?
【问题讨论】:
标签: java tree breadth-first-search depth-first-search
看看http://www.jgrapht.org/ 那里提供了一个免费的java 图形库。使用这个库,您可以创建所有类型的图形,并且由于树只是图形的一个子集,您也可以使用这个库创建树。使用这个库很容易实现 DFS(或 BFS),或者您可以使用该库提供的算法。但是,实施 DFS(或 BFS)是一个很好的练习。
祝你好运!
【讨论】:
您可以使用DefaultMutableTreeNode 来构建您的数据结构。它包含方法breadthFirstEnumeration() 和depthFirstEnumeration(),并允许您通过调用setUserObject(Object) 将数据附加到每个节点。尽管是 javax.swing.tree 包的一部分,但这是“模型”代码,因此没有任何直接的 UI 代码依赖项。
【讨论】:
假设您不希望结构中有重复项,那么 TreeSet 是一个足够好的起点。免费获得 DFS(iterator()),并且可以利用 NavigableSet 接口构建 BFS。
【讨论】:
不,没有内置结构。鉴于 Java 基础库应有尽有,没有与 Data.Tree 等效的东西真是太疯狂了
最接近的是java.util.TreeSet,它被设计成一个Set而不是一个Tree(还有swing JTree,但对你没有帮助)。
【讨论】: