如何在Java中实现返回最短路径长度的深度优先搜索

如何在Java中实现返回最短路径长度的深度优先搜索,java,graph,path,nodes,depth-first-search,Java,Graph,Path,Nodes,Depth First Search,我目前正在编写一个程序,它获取一个节点图,并返回特征路径长度(从一个节点到每个其他节点的平均路径长度,然后对每个节点重复,然后再次平均)。我已经完成了所有的工作,但是我不确定如何实现节点的深度优先搜索,以找到从一个节点到另一个节点的最短路径。这就是我目前所拥有的 int dist = 0; List<Node> path = new ArrayList<Node>(); List<Node> shrtPath =

我目前正在编写一个程序,它获取一个节点图,并返回特征路径长度(从一个节点到每个其他节点的平均路径长度,然后对每个节点重复,然后再次平均)。我已经完成了所有的工作,但是我不确定如何实现节点的深度优先搜索,以找到从一个节点到另一个节点的最短路径。这就是我目前所拥有的

        int dist = 0;
        List<Node> path = new ArrayList<Node>();
        List<Node> shrtPath = new ArrayList<Node>();
        Node curNode = rtNode;
        if (rtNode == goalNode) {
            return dist;
        }
        path.add(curNode);
        for (int l = 0; l < rtNode.connections.size(); l++) {
            Node tempNode = new Node();
            curNode = rtNode.connections.get(l);
            for (int i = 0; i < curNode.connections.size(); i++) {
                tempNode = curNode.connections.get(i);
                path.add(tempNode);
                if (curNode.connections.get(i) == goalNode) {
                    if (path.size() < shrtPath.size()) {
                        shrtPath.clear();
                        shrtPath = path;
                    }
                }
            }
        }
        dist = shrtPath.size();
        return dist;
int dist=0;
列表路径=新的ArrayList();
List shrtPath=new ArrayList();
节点curNode=rtNode;
if(rtNode==goalNode){
返回距离;
}
添加路径(curNode);
对于(int l=0;l
我知道这是不完整的,但我不确定从这里走到哪里,或者我是否朝着正确的方向前进。我知道我需要能够搜索根节点及其连接,但我不确定如何循环连接的连接等等。我还意识到我必须标记访问的节点,因为我的节点类中有一个布尔值,我只是还没有实现它。这也是我的节点类

import java.util.ArrayList;
import java.util.List;



public class Node {

    List <Node> connections = new ArrayList<Node>();
    int cons = 0;
    boolean hub;
    boolean visited = false;

    public Node() {
        hub = false;

    }

    public void setNbs(Node nb1, Node nb2) {
        connections.add(nb1);
        connections.add(nb2);
    }

    public boolean addExtraCon(Node con) {
        for (int i = 0; i < connections.size(); i++) {
            if(connections.get(i) == con) {
                return false;
            }
        }
        connections.add(con);
        return true;
    }

    public boolean makeHub() {
        hub = true;
        return hub;
    }

    public int numberOfConnections() {
        cons = connections.size();
        return cons;
    }

    public boolean isHub() {
        if (hub == true) {
            return true;
        }
        return false;
    }

}
import java.util.ArrayList;
导入java.util.List;
公共类节点{
列表连接=新建ArrayList();
int cons=0;
布尔中心;
布尔值=假;
公共节点(){
hub=false;
}
公共无效集合NBS(节点nb1、节点nb2){
连接。添加(nb1);
连接。添加(nb2);
}
公共布尔加法器(节点con){
对于(int i=0;i

我希望这有助于任何和所有的帮助是非常感谢。提前谢谢。

线索:你知道DPS可以使用堆栈实现吗?@noMAD是的,但我已经有了一个ArrayList,所以我想我会使用它。我非常愿意重做使用堆栈的方法。尽管如此,我还是希望能得到任何帮助。看看这个。