无权图的最短路径
思路:无权图的最短路径也就是要求两点之间最少几跳可达,那么我们可以这样,用广度遍历,从起点开始一层层遍历,如果第一次遍历到终点,那么肯定是最短路径。
public static void findPath(int start,int end)
{ //创建一个队列来存储
LinkedList< VNode> queue=new LinkedList<VNode>(); queue.offer(nodes[start]);
while(!queue.isEmpty())
{
VNode vnode=queue.peek();
isVisit[vnode.index]=true;
BNode bnode=vnode.bnode; //如果结束点已经访问 跳出循环
if(isVisit[end]) break; //如果他的邻节点都访问或者没有邻节点 跳出循环
while(bnode!=null)
{ //如果邻节点还没被访问访记录他的上一节点,否则不进行记录。这样的话即使到了下一跳有这个顶点,记录的也是更的短路径,比如说起点A 邻节点有BCD B的邻节点是C,此时遍历A的邻节点C的时候,就记录C的上一节点是A,下次遍历B的领节点,因为C已经被访问,所以C记录的上一节点还是A,这样就保证了最短路径。
if(!isVisit[bnode.index])
{&nb
