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);
                    }
                }
            }
        }
Exemplo n.º 2
0
        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);
                    }
                }
            }
        }