我是 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/