Поиск в глубину в графе
Доброго времени суток имеется функция поиска в ширину, нужно переделать её в функцию поиска в глубину, как правильно это сделать?
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;
}