代码如下(示例):
//判断从V出发是否能走到终点,如果能,要记录路径
Node path[MAX_LEN]; //MAX_LEN取节点总数即可
int depth;
bool Dfs(v) {
if(v是终点) {
path[depth] = v;
return true;
}
if(v为旧点)
return false;
将v标记为旧点; //在此之间是新点
path[depth] = v;
++depth;
对 和v相邻的每个节点U {
if(Dfs(U) == true) //说明这个相邻的点是终点
return true;
}
--depth; //说明这儿既不是终点,也没有相邻的点,肯定就是走错路了呗,应该回溯了
return false;
}
int main() {
将所有点都标记为新点;
depth = 0;
if(Dfs(起点)) {
for(int i = 0; i <= depth; i++)
cout << path[i] << endl;
}
}