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; } } }
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; } }