是否有可能使用堆栈的 DFS 实现,它为我提供了在图形(循环/非循环)的情况下从一个顶点到另一个顶点的所有可能路径。
我目前的 DFS 代码如下:-
void Graph::DFS(int x, int required){
stack s;
bool *visited = new bool[n+1];
int i;
for(i = 0; i <= n; i++)
visited[i] = false;
s.push(x);
visited[x] = true;
if(x == required) return;
cout << "Depth first Search starting from vertex ";
cout << x << " : " << endl;
while(!s.isEmpty())
{
int k = s.pop();
if(k == required)
{
cout<<k<<" ";
break;
}
cout<<k<<" ";
for (i = n; i >= 0 ; --i)
if (isConnected(k, i) && !visited[i])
{
s.push(i);
visited[i] = true;
}
}
cout<<endl;
delete [] visited;
}
如果存在的话,这确实给了我一条可能的路径,但我想要的是all possible paths
而不仅仅是一个。