Example #1
0
        private string ShowStack(Col.Stack <Node <T> > stack)
        {
            var    arr = stack.ToArray();
            string res = "";

            foreach (var item in arr)
            {
                res += item.ToString() + " ";
            }
            return(res);
        }
Example #2
0
        public string DFS()
        {
            string protocol         = "";
            var    stack            = new Col.Stack <Node <T> >();
            int    currentDFSNumber = 1;
            var    currentNode      = ParentNode;

            visited = new List <Node <T> >();
            visited.Add(currentNode);
            ParentNode.Number = currentDFSNumber;
            stack.Push(ParentNode);
            protocol += $"{currentNode.Data} {currentNode.Number} {ShowStack(stack)}\n";
            while (stack.Count != 0)
            {
                currentNode = stack.Peek();
                if (currentNode.RelatedNodes.All(x => visited.Contains(x)))
                {
                    stack.Pop();
                    protocol += $"- - {ShowStack(stack)}\n";
                }
                else
                {
                    foreach (var node in currentNode.RelatedNodes)
                    {
                        if (!visited.Contains(node))
                        {
                            visited.Add(node);
                            node.Number = ++currentDFSNumber;
                            stack.Push(node);
                            protocol += $"{node.Data} {node.Number} {ShowStack(stack)}\n";
                            break;
                        }
                    }
                }
            }
            return(protocol);
        }