C#自定义数据结构上的DFS:在图中查找循环
我需要在无向图上实现DFS。 我的数据结构很简单。 我有一个节点类和一个字典 它包含图中每个节点的邻居(节点)。因此,键是节点,值是它们直接连接的节点。 如何实现DFS来计算图表中的周期 这是我当前的代码:C#自定义数据结构上的DFS:在图中查找循环,c#,algorithm,graph,depth-first-search,C#,Algorithm,Graph,Depth First Search,我需要在无向图上实现DFS。 我的数据结构很简单。 我有一个节点类和一个字典 它包含图中每个节点的邻居(节点)。因此,键是节点,值是它们直接连接的节点。 如何实现DFS来计算图表中的周期 这是我当前的代码: foreach (Node n in nodeList) { while (loopFounded == false) { visitNode(n); if (
foreach (Node n in nodeList)
{
while (loopFounded == false)
{
visitNode(n);
if (loopFounded == true)
{
loops.Add(loopIndex, new ArrayList(visiting));
visiting.Clear();
loopIndex = loopIndex + 1;
}
}
loopFounded = false;
}
visitNode功能是:
void visitNode(Node n)
{
if (visiting.Capacity != 0 && visiting.Contains(n))
{
Console.WriteLine("loop!");
loopFounded = true;
return;
}
visiting.Add(n);
if (neighbours.ContainsKey(n))
{
foreach (Node node in neighbours[n])
{
if (!visited.Contains(node) && !visiting.Contains(node))
{
visitNode(node);
}
}
visited.Add(n);
}
return;
}
它只返回由一对节点组成的循环。。。
有人能帮我吗?谢谢请参见请包含
节点
类的定义。当然,节点是一个简单的类,包含两个float,X和Y。默认构造函数,Get和Set方法。没有别的了。