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