public static void PrintGraphBFS(GraphVertex root) { Dictionary <GraphVertex, bool> visited = new Dictionary <GraphVertex, bool>(); Queue <GraphVertex> queue = new Queue <GraphVertex>(); queue.Enqueue(root); while (queue.Count > 0) { GraphVertex v = queue.Dequeue(); if (!visited.ContainsKey(v)) // To make sure we dont print twice when we encounter cycle { visited[v] = true; Console.Write("{0} -> ", v.Data); foreach (GraphVertex n in v.NeighbourVertices) { Console.Write("{0} ", n.Data); if (!visited.ContainsKey(n)) { queue.Enqueue(n); } } Console.WriteLine(); } } }
public void MergeVertex(int vertex1, int vertex2) { if (!AllVertices.ContainsKey(vertex1)) { AllVertices[vertex1] = new GraphVertex(vertex1); } if (!AllVertices.ContainsKey(vertex2)) { AllVertices[vertex2] = new GraphVertex(vertex2); } AllVertices[vertex1].NeighbourVertices.AddRange(AllVertices[vertex2].NeighbourVertices); }
public void AddEdge(int start, int end) { if (!AllVertices.ContainsKey(start)) { AllVertices[start] = new GraphVertex(start); } if (!AllVertices.ContainsKey(end)) { AllVertices[end] = new GraphVertex(end); } AllVertices[start].NeighbourVertices.Add(AllVertices[end]); }