C#自定义数据结构上的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 (

我需要在无向图上实现DFS。 我的数据结构很简单。 我有一个节点类和一个字典 它包含图中每个节点的邻居(节点)。因此,键是节点,值是它们直接连接的节点。 如何实现DFS来计算图表中的周期

这是我当前的代码:

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方法。没有别的了。