Поиск в глубину в графе

Доброго времени суток имеется функция поиска в ширину, нужно переделать её в функцию поиска в глубину, как правильно это сделать?

static void searchWidth<T>(List<Vertex<T>> vertexes, List<Edge<T>> edges, int index = 0)

{

if (index > vertexes.Count-1)

index = vertexes.Count-1;

System.Console.WriteLine(vertexes[index].param);

List<Edge<T>> temp_edge = edges;

List<Vertex<T>> queue = new List<Vertex<T>>();

queue.Add(vertexes[index]);

while (queue.Count >0)

{

List<Vertex<T>> new_queue = new List<Vertex<T>>();

List<Edge<T>> new_temp_edge = new List<Edge<T>>(temp_edge);

for (int i = 0; i < queue.Count; i++)

for (int j = 0; j < temp_edge.Count; j++)

{

if (temp_edge[j].right.state == false && temp_edge[j].left == queue[i])

{

new_queue.Add(temp_edge[j].right);

new_temp_edge.Remove(temp_edge[j]);

}

else if (temp_edge[j].left.state == false && temp_edge[j].right == queue[i])

{

new_queue.Add(temp_edge[j].left);

new_temp_edge.Remove(temp_edge[j]);

}

}

temp_edge = new_temp_edge;

queue = null;

for(int i = 0; i<new_queue.Count; i++)

{

new_queue[i].state = true;

Console.Write(new_queue[i].param + " ");

}

Console.Write(Environment.NewLine);

queue = new_queue;

}

Ответы (0 шт):