educative.io

Educative

Recursive solution is not in sync with pseudo code

Recursive call of utilityFunction is not required if while loop is used. Correct recursive function should be as below.

void Graph::utilityFunction(list &queue, bool *visited){
list ::iterator i;
if (queue.empty())
return ;
int source = queue.front();
cout << source << " ";
visited[source] = true;
queue.pop_front();

for (i = adjacencyList[source].begin(); i != adjacencyList[source].end(); ++i) {
if (!visited[ * i]) {
visited[ * i] = true;
queue.push_back( * i);
}
}
utilityFunction(queue, visited);
}