2016-11-29 5 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 отсюда возможно: http://www.geeksforgeeks.org/depth-first-traversal-for-a-graph/ –

+0

«Я знаю, как делать ABC. Как я могу сделать?» Где вы получить этот код? Если вы написали его сами, ответ должен быть тривиальным – user463035818

ответ

0

Graph :: Dfsutil должен возвращать «найден» флаг, и список пройденных узлов до сих пор, что может быть продлен каждый раз, когда «найден == истинный» обнаружен.