/// <summary>
        /// Bredden först algoritm (BFS)
        /// </summary>
        public static string RunAlgorithm(Node startNode, Node endNode)
        {
            Queue<Node> nodeQueue = new Queue<Node>();

            startNode.DistanceFromStart = 0;

            nodeQueue.Enqueue(startNode);

            while (nodeQueue.Any())
            {
                var currentNode = nodeQueue.Dequeue();

                if (currentNode.Id == endNode.Id)
                {
                    var pathStack = new Stack<Node>();
                    Node temporaryNode = currentNode;
                    while (temporaryNode.PreviousNode != null)
                    {
                        pathStack.Push(temporaryNode);
                        temporaryNode = temporaryNode.PreviousNode;
                    }
                    pathStack.Push(startNode);

                    string pathString = string.Empty;
                    while (pathStack.Any())
                    {
                        var node = pathStack.Pop();
                        pathString += node.Id;

                        if (node.Id != endNode.Id)
                        {
                            pathString += ", ";
                        }
                    }

                    return pathString;
                }
                else
                {
                    foreach (var nodeNeighbour in currentNode.Neighbours)
                    {
                        if (!nodeNeighbour.IsVisited)
                        {
                            nodeNeighbour.DistanceFromStart = currentNode.DistanceFromStart + 1;
                            nodeNeighbour.PreviousNode = currentNode;
                            nodeQueue.Enqueue(nodeNeighbour);
                        }
                    }
                }
            }

            return string.Empty;
        }
        /// <summary>
        /// Skapar en graf som en lista av instanser av Node från de två första input-data-strängarna.
        /// </summary>
        /// <param name="numberOfNodes">Antalet noder i grafen</param>
        /// <param name="edges">en komma separerad lista av kanter i form av strängar med siffror, svarand mot nodnummer, 
        /// som är separerade av mellanslag.</param>
        /// <returns>grafen som en Node[]</returns>
        private static Node[] CreateGraph(string numberOfNodes, string edges)
        {
            //Skapa arrayen av noder.
            var graph = new Node[int.Parse(numberOfNodes)];

            for (int i = 0; i < graph.Length; i++)
            {
                graph[i] = new Node(i);
            }
            string[] pairs = edges.Split(new[] {", "}, StringSplitOptions.RemoveEmptyEntries);

            foreach (string pair in pairs)
            {
                string[] nodeNumbers = pair.Split(' ');
                //Lägg till den ena av de två som bildar en kant som granne till den andre och tvärtom.
                graph[int.Parse(nodeNumbers[0])].Neighbours.Add(graph[int.Parse(nodeNumbers[1])]);
                graph[int.Parse(nodeNumbers[1])].Neighbours.Add(graph[int.Parse(nodeNumbers[0])]);
            }

            return graph;
        }