internal static void BFSTraverseExperiment(IExperiment experiment, ExperimentNode startFromNode, TraverseTask Task) { //traverse graph down from the node Queue<ExperimentNode> traversingQueue = new Queue<ExperimentNode>(); HashSet<ExperimentNode> foundVertices = new HashSet<ExperimentNode>(); traversingQueue.Enqueue(startFromNode); while (traversingQueue.Count > 0) { ExperimentNode currentNode = traversingQueue.Dequeue(); //do some stuff Task(currentNode); foreach (ExperimentNodeConnection edge in experiment.OutEdges(currentNode)) { if (foundVertices.Contains(edge.Target) == false) { traversingQueue.Enqueue(edge.Target); foundVertices.Add(edge.Target); } } } }
internal static void BFSTraverseExperiment(IExperiment experiment, ExperimentNode startFromNode, TraverseTask Task) { //traverse graph down from the node Queue <ExperimentNode> traversingQueue = new Queue <ExperimentNode>(); HashSet <ExperimentNode> foundVertices = new HashSet <ExperimentNode>(); traversingQueue.Enqueue(startFromNode); while (traversingQueue.Count > 0) { ExperimentNode currentNode = traversingQueue.Dequeue(); //do some stuff Task(currentNode); foreach (ExperimentNodeConnection edge in experiment.OutEdges(currentNode)) { if (foundVertices.Contains(edge.Target) == false) { traversingQueue.Enqueue(edge.Target); foundVertices.Add(edge.Target); } } } }