Всем привет. Задача реализовать бинарное дерево поиска. Обязательное условие реализовать итератор. Уже несколько дней пытаюсь найти решение, гугл не помогает, везде в основном примеры методов для вывода на печать всех элементов, но мне нужно реализовать именно итератор, с методами next и hasNext. Буду очень признателен за вербальный алгоритм, и бесконечно благодарен за пример в коде. P.S. Метод add() реализован, элементы корректно добавляются.
@Override
public Iterator<E> iterator() {
int expectedModCount = modCount;
return new Iterator<E>() {
BinNode<E> curr = root;
@Override
public boolean hasNext() {
return curr != null;
}
@Override
public E next() {
checkModCount();
//todo
return ;
}
private void checkModCount() {
if (expectedModCount != modCount) {
throw new ConcurrentModificationException();
}
}
};
}
}
Давайте заменим java на автомастерскую. "Ребят, собрал машину, двигатель впихнул, ездит. Вот только тормоза не могу запилить. Облазил весь интернет, а там только показывают как двери менять. Машина обычная - на колесах, они такие крутятся и она вперед-назад". Не надо так ) Понял ваш вопрос только потому что сам когда то учился в универе.
class Node {
Object value;
Node left, right;
}
Я так понимаю ваша проблема, заключается в том, что вы знаете как реализовывать классический рекурсивный вариант:
void go(Node root) {
go(root.left);
go(root.right);
}
А он не ложится на стандартный итартор. Проблема в том, что вам нужно сделать обход не рекурсивным. А для этого придется сохранять путь назад вручную (в случае с рекурсией, он сохраняется в стеке, я думаю ошибка StackOverflow вам знакома).
В общем чтобы не изобретать велосипед, уже был похожий вопрос.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Возник вопрос по поводу работы Java инкремента, я не могу понять логику как он считает его в этих выражения:
Есть jtable (10строк 2 столбца), необходимо установить фокус на ячейку (примерно на 5 строку 1 столбца) Как сделать ?
Есть класс Перcептрон , для обучения использую данные из массива patterns и answers которые ввожу в ручную , все отлично работаетПри считывании из файла...
Selenium я уже использовал, но мне не совсем подходит то, что я вижу все эти промежуточные страницы и тот факт, что это настолько же медленно, если...