//String outside of the function to be allowed to changed via //no need string stack argument recursive instead public void travaerse2(node currentNode, node outNode, string st) { st += " "; st += currentNode.name; if (!currentNode.Equals(outNode)) { if (currentNode.next.Count > 0) { foreach (node noodel in currentNode.next) { //To get loops /* * funciton already return a node */ // xx currentNode = NextNode(currentNode); //node temp = NextNode(currentNode, st); node temp = null; if (noodel.visited == false) { noodel.visited = true; temp = noodel; } else { if (st.Contains(noodel.name)) { //found a loop int indexOfString = st.IndexOf(noodel.name); string loopName = st.Substring(indexOfString); loops.Add(loopName); } } if (temp != null) { travaerse2(temp, outNode, st); } //>>Here arrived at end //Change visited to false, so it can be visited by other branches } currentNode.visited = false; //>>Here Finished all branches } else { //>> current node can't reach output currentNode.visited = false; } } else { //recursive reached outnode here stPaths.Add(st); currentNode.visited = false; //Console.WriteLine("Arrived to out node"); } }
public void dfs_St_Path(node input, node output) { for (int i = 0; i <= input.next.Count(); i++) { input.visited = true; stk.Add(input); dfs_St_Path(input.next[i], output); } if (input.Equals(output)) { } }