【问题标题】:Depth first search using java使用java进行深度优先搜索
【发布时间】:2009-09-16 09:47:41
【问题描述】:

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

java 是否有内置的树数据结构,我可以轻松使用?或者其他我可以使用的东西?

【问题讨论】:

  • t@adamski。谢啦。我不知道我的投票帮助了某人。从现在开始我会

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


【解决方案1】:

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

祝你好运!

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      假设您不希望结构中有重复项,那么 TreeSet 是一个足够好的起点。免费获得 DFS(iterator()),并且可以利用 NavigableSet 接口构建 BFS。

      【讨论】:

      • 需要牢记几个限制:TreeSet 强制将底层数据建模为二叉树并且具有可比性。
      【解决方案4】:

      不,没有内置结构。鉴于 Java 基础库应有尽有,没有与 Data.Tree 等效的东西真是太疯狂了

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

      【讨论】:

      • 创建 Tree 数据类型非常容易 - 对于 lib,很难使其对所有用例都足够通用,但所有需要的部分已经在 java 中了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-12
      • 1970-01-01
      相关资源
      最近更新 更多