private string ShowStack(Col.Stack <Node <T> > stack) { var arr = stack.ToArray(); string res = ""; foreach (var item in arr) { res += item.ToString() + " "; } return(res); }
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); }