gpt4 book ai didi

c++ - 深度优先搜索算法

转载 作者:太空宇宙 更新时间:2023-11-04 13:08:53 26 4
gpt4 key购买 nike

我想到达这棵树的节点 Y,但这段代码遍历了整棵树。我应该做哪些改变来实现我的目标?如何在遍历的每一步显示行进路径?我使用深度优先搜索。感谢您的帮助。

class Graph
{
int V; // No. of vertices
list<int> *adj;
void DFSUtil(int v, bool visited[]);
public:
Graph(int V);
void addEdge(int v, int w);
void DFS(int v);
};
Graph::Graph(int V)
{
this->V = V;
adj = new list<int>[V];
}
void Graph::addEdge(int v, int w)
{
adj[v].push_back(w); // Add w to v’s list.
}
void Graph::DFSUtil(int v, bool visited[])
{
visited[v] = true;
cout << v << " ";
list<int>::iterator i;
for (i = adj[v].begin(); i != adj[v].end(); ++i)
if (!visited[*i])
DFSUtil(*i, visited);
}
void Graph::DFS(int v)
{
bool *visited = new bool[V];
for (int i = 0; i < V; i++)
visited[i] = false;
DFSUtil(v, visited);
}
int main()
{
Graph g(25);
g.addEdge(0, 1);
g.addEdge(0, 2);
//...
return 0;
}

enter image description here

最佳答案

Graph::DFSUtil 应该返回一个“found”标志,以及迄今为止遍历的节点列表,每次检测到“found==true”时都可以扩展。

关于c++ - 深度优先搜索算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40865719/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com