Esempio n. 1
0
        //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");
            }
        }
Esempio n. 2
0
 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))
     {
     }
 }