private Couple <int> AStarTreeSearch()
        {
            Console.WriteLine("A* Tree Search:");

            SortedList <AStarTreeNode> openedNodes = new SortedList <AStarTreeNode>()
            {
                new AStarTreeNode(distanceMethod, 0, startPosition)
            };
            int minSteps      = -1;
            int examinedNodes = 0;

            while (openedNodes.Count > 0)
            {
                examinedNodes++;
                AStarTreeNode currentNode = openedNodes[0];
                openedNodes.RemoveAt(0);
                if (IsGoal(currentNode))
                {
                    minSteps = currentNode.DistanceFromRoot;
                    break;
                }
                openedNodes.AddAll(GetSuccessors(currentNode));
            }
            return(new Couple <int>(minSteps, examinedNodes));
        }