private DLinkedList<Vertex> displayBestTraversal(DLinkedList<Vertex> traversalList,
            int[] startEndCoords, MatrixGraph maze)
    {
        Iterable<Vertex> vertices = traversalList;
        DLinkedList<Vertex> reverseList = new DLinkedList<>();
        for (Vertex vertex : vertices)
        {
            reverseList.addFirst(vertex);
            if (isEndVertex(vertex, startEndCoords))
                break;
        }
        DLinkedList<Vertex> stack = new DLinkedList<>();
        for (Vertex vertex : reverseList)
        {
            if (stack.size() > 0)
            {
                Iterable<DNode<Vertex>> stackNodes = stack.nodes();
                boolean isIncidentToVerticesInStack = false;
                for (DNode<Vertex> stackNode : stackNodes)
                {
                    Vertex stackVertex = stackNode.getElement();
                    if (maze.areAdjacent(vertex, stackVertex))
                    {
                        isIncidentToVerticesInStack = true;
                        break;
                    }
                }
                if (isIncidentToVerticesInStack)
                {
//                    for (DNode<Vertex> stackNode : stackNodes)
//                    {
//                        Vertex stackVertex = stackNode.getElement();
//                        if (maze.areAdjacent(vertex, stackVertex))
//                        {
                            stack.addFirst(vertex);
//                            break;
//                        }
//                        else
//                        {
//                            stack.remove(stackNode);
//                        }
//                    }
                }
            }
            else
            {
                stack.addFirst(vertex);
            }
        }
        System.out.println("Best traversal vertices from start to finish");
        for (Vertex vertex : stack)
        {
            System.out.println(vertex);
        }
        return stack;
    }