@Override
            public C next() {
                while (toVisit.size()>0) {
                    // Go thru the current nodes
                    BinarySearchTree.Node<C> n = toVisit.pop();

                    // Add non-null children
                    if (n.lesser!=null) toVisit.add(n.lesser);
                    if (n.greater!=null) toVisit.add(n.greater);

                    // Update last node (used in remove method)
                    last = n;
                    return n.id;
                }
                return null;
            }