public bool BreadthFirstSearch(Node Start)
        {
            Queue.Enqueue(Start);

            VisitedNodes.Add(Start);

            for (; Queue.Count > 0;)
            {
                Start = Queue.Dequeue();

                for (int Index = 0; Index < InnerGraph.NumberOfNodes; Index++)
                {
                    if (InnerGraph.SetOfNodes[Start.Index][Index] != null && !VisitedNodes.Contains(InnerGraph.SetOfNodes[Index]))
                    {
                        ResultOfSearching.Add(InnerGraph.FindEdge(Start, InnerGraph.SetOfNodes[Index]));

                        Queue.Enqueue(InnerGraph.SetOfNodes[Index]);

                        VisitedNodes.Add(InnerGraph.SetOfNodes[Index]);
                    }
                }
            }

            return(VisitedNodes.Count.Equals(InnerGraph.NumberOfNodes));
        }
示例#2
0
 /// <summary>
 ///  that type of DFS that start from one Node ( that give as param) and researche all graph </summary>
 /// <param name="Start">< Node that our research start>
 /// <returns> true if we find all Nodes</returns>
 public bool DepthFirstSearch(Node Start)
 {
     VisitedNodes.Add(Start);
     for (int Index = 0; Index < InnerGraph.QuantityOfNodes; Index++)
     {
         if (InnerGraph.SetOfNodes[Start.Index][Index] != null &&
             !VisitedNodes.Contains(InnerGraph.SetOfNodes[Index]))
         {
             ResultOfSearching.Add(InnerGraph.FindEdge(Start, InnerGraph.SetOfNodes[Index]));
             DepthFirstSearch(InnerGraph.SetOfNodes[Index]);
         }
     }
     return(VisitedNodes.Count.Equals(InnerGraph.QuantityOfNodes));
 }
        public bool DepthFirstSearch(Node Start, Node Target)
        {
            VisitedNodes.Add(Start);

            if (VisitedNodes.Contains(Target))
            {
                return(true);
            }

            for (int Index = 0; Index < InnerGraph.NumberOfNodes; Index++)
            {
                if (InnerGraph.SetOfNodes[Start.Index][Index] != null && !VisitedNodes.Contains(InnerGraph.SetOfNodes[Index]))
                {
                    ResultOfSearching.Add(InnerGraph.FindEdge(Start, InnerGraph.SetOfNodes[Index]));

                    if (DepthFirstSearch(InnerGraph.SetOfNodes[Index], Target))
                    {
                        return(true);
                    }
                }
            }

            return(VisitedNodes.Contains(Target));
        }