Java广度优先搜索-8滑块

Java广度优先搜索-8滑块,java,algorithm,breadth-first-search,Java,Algorithm,Breadth First Search,问题是,广度优先搜索需要对包含9个值的板数组进行排序。1,2,3,4,5,6,7,8,0.. 因此,被告知不要修改大多数现有代码,并在大量类文件中添加BFS和其他语句。运行时间为1,2,5,3,4,8,6,7,0。它正在正确地移动0,但对于路径,不确定要向现有代码中添加什么来解决此问题,以便解决路径和数字问题 而(!frontier.isEmpty()){ cur=frontier.remove(); if(cur.isGoal()){ 返回电流; }else if(cur.getDepth(

问题是,广度优先搜索需要对包含9个值的板数组进行排序。1,2,3,4,5,6,7,8,0.. 因此,被告知不要修改大多数现有代码,并在大量类文件中添加BFS和其他语句。运行时间为1,2,5,3,4,8,6,7,0。它正在正确地移动0,但对于路径,不确定要向现有代码中添加什么来解决此问题,以便解决路径和数字问题


而(!frontier.isEmpty()){
cur=frontier.remove();
if(cur.isGoal()){
返回电流;
}else if(cur.getDepth()<15){
已访问。添加(cur);
对于(节点s:cur.expand()){
如果(!visted.contains)){
s、 setParent(cur);
s、 设置深度(cur.getDepth()+1);
边界。添加(s);
numnodes++;
}
}
}
}
返回null;

您在评论中提到,您将输出视为
1、2、3、4、5、6、7、8、0
。这在方法
runBFS
中是不可能的。当您查看方法签名
节点runBFS(Node start)
时,可以看到此方法返回的是
节点,而不是节点列表

除此之外,还有一个逻辑错误。在下面的代码块中,您可以看到您将
节点s
的父节点添加到
s
。换句话说:
s
是他自己的父母

如果(!explored.contains)){
s、 setParent(s);//这里添加了错误的父项-它应该是s.setParent(cur)
s、 设置深度(cur.getDepth()+1);
边界。添加(s);
numnodes++;
}

只需将行更改为
s.setParent(cur)
cur
是您要查找其兄弟姐妹的
节点

你的问题是什么?如果你没有找到你的“目标”,你就不会回报任何东西。此外,这是一个搜索,为什么要对其进行排序?您可以添加预期的输出吗?你说的是排序,而BFS是一种搜索算法。你能编辑你的代码吗?有一个
返回值
丢失。很抱歉,这个方法不能给你一个列表作为结果,因为它只返回一个
节点
。看起来您正在使用其他方法来查找路径