/// <summary> /// /// </summary> /// <param name="startNode"></param> /// <param name="way"></param> /// <returns></returns> private List <int> SearchTheGraph(Node startNode, WayOfSearch way) { if (startNode == null) { throw new ArgumentNullException(); } if (ContainsNode(startNode) == false) { throw new KeyNotFoundException(); } int nodeNumber = startNode.NodeNumber; List <int> closed = new List <int>(); List <int> open = new List <int>(); open.Insert(0, nodeNumber); while (open.Count > 0) { int temp = open[0]; open.RemoveAt(0); closed.Add(temp); SortedList <int, Node> neighbor = this.NearOfNodeDirected(new Node(temp));//verify foreach (int number in neighbor.Keys) { if ((!closed.Contains(number)) && (!open.Contains(number))) { switch (way) { case WayOfSearch.BreadthFirst: open.Add(number); break; case WayOfSearch.DepthFirst: open.Insert(0, number); // add at the front of the open List break; } } } } return(closed); }
/// <summary> /// /// </summary> /// <param name="startNode"></param> /// <param name="way"></param> /// <returns></returns> private List<int> SearchTheGraph(Node startNode, WayOfSearch way) { if (startNode == null) { throw new ArgumentNullException(); } if (ContainsNode(startNode) == false) { throw new KeyNotFoundException(); } int nodeNumber = startNode.NodeNumber; List<int> closed = new List<int>(); List<int> open = new List<int>(); open.Insert(0, nodeNumber); while (open.Count > 0) { int temp = open[0]; open.RemoveAt(0); closed.Add(temp); SortedList<int, Node> neighbor = this.NearOfNodeDirected(new Node(temp));//verify foreach (int number in neighbor.Keys) { if ((!closed.Contains(number)) && (!open.Contains(number))) { switch (way) { case WayOfSearch.BreadthFirst: open.Add(number); break; case WayOfSearch.DepthFirst: open.Insert(0, number); // add at the front of the open List break; } } } } return closed; }