예제 #1
0
        public void BFS(VNode v)
        {
            /*使用队列来实现广度优先搜索

            */
            Queue<VNode> q = new Queue<VNode>();
            v.Visited = true;
            q.Enqueue(v);
            Console.WriteLine("Visit:{0}", v.Data);
            while (q.Count > 0)
            {
                var vnode = q.Dequeue();
                var enode = vnode.FirstEdge;
                while (null != enode)
                {
                    if (!enode.Adj.Visited)
                    {
                        enode.Adj.Visited = true;
                        Console.WriteLine("Visit:{0}", enode.Adj.Data);
                        q.Enqueue(enode.Adj);
                    }
                    enode = enode.Next;
                }
            }
        }
예제 #2
0
        public void DFS(VNode vertex)
        {
            vertex.Visited = true;
            Console.WriteLine("Visit:{0}", vertex.Data);

            var eNode = vertex.FirstEdge;
            while (null != eNode)
            {
                if (!eNode.Adj.Visited)
                {
                    DFS(eNode.Adj);
                }
                eNode = eNode.Next;
            }
        }