2016-11-29 105 views
1

我想要到達此樹的節點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

+1

從某人處複製作業? :( – Starl1ght

+1

@ Starl1ght from here possible:http://www.geeksforgeeks.org/depth-first-traversal-for-a-graph/ –

+0

「我知道如何做ABC,我該怎麼做A?」你在哪裏得到那個代碼?如果你自己寫的,答案應該是微不足道的 – user463035818

回答

0

圖:: DFSUtil應該返回「發現」的旗幟,並經過的各個節點的名單至今,可每一次「發現==真」檢測進行擴展。