java - 在 Java 中实现 BFS

标签 java breadth-first-search game-development

我是 Java 的初学者,我需要一些帮助。

我正在尝试实现广度优先搜索算法来解决益智游戏(Unblock Me a game on Android)。我已经完成了 GUI,但我仍然坚持使用算法。

到目前为止,我可以计算每个 block 的可用移动,这应该是根节点的子节点。每个节点(链表)都有每个 block 的位置,所有节点都存储在一个集合中。

我现在需要的是将每个节点标记为已访问,这样我就不会陷入无限循环。

如有任何帮助,我将不胜感激,如果我有任何错误,请纠正我。

提前致谢:)

最佳答案

public void bfs()
{
    // BFS uses Queue data structure
    Queue queue = new LinkedList();
    queue.add(this.rootNode);
    printNode(this.rootNode);
    rootNode.visited = true;
    while(!queue.isEmpty()) {
        Node node = (Node)queue.remove();
        Node child=null;
        while((child=getUnvisitedChildNode(node))!=null) {
            child.visited=true;
            printNode(child);
            queue.add(child);
        }
    }
    // Clear visited property of nodes
    clearNodes();
}

这是 java 中广度优先搜索的示例,如果您提供一些代码,我们可以帮助它适应您的代码

关于java - 在 Java 中实现 BFS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16380026/

相关文章:

编译后 Java Servlet 无法识别 java 文件中的更改

java - Android:是否可以在另一个手指已经触摸屏幕时处理点击?

unity3d - 无法登录 Unity : Sorry, 此链接不再有效

java - 策略游戏 map 加载算法中的性能相关问题(Java,lwjgl)

optimization - 如何在 Roblox Studio 中优化 If 语句的过度使用

java - Dagger 2 生成的测试组件无法识别

java - WebDriver getText 抛出异常

algorithm - 广度优先搜索时间复杂度分析

algorithm - 有向图广度优先搜索期间的边分类

python - 如何遍历可变长度路径到达同一目的地?