Мне нужна помощь в настройке этого конструктора для моего класса Iterator.Направления следующие:
Конструктор должен создать новый стек и поместить в него свой параметр узла, а затем все оставшиеся дочерние элементы, доступные из этого параметра.Рассмотрим случай, когда дерево состоит только из левых потомков (по сути, это связанный список).Узел с самым высоким значением (root) будет помещен первым и будет находиться в нижней части стека, за ним следует его левый дочерний элемент чуть выше него в стеке, за которым следует его левый дочерний элемент, и так далее до листа, который будет содержатьсамое низкое значение в дереве.При извлечении узлов из стека они будут содержать значения от низшего к высшему… обход по порядку.
Я не уверен, как создать новый стек с узлом в параметре, являющимся типом типа BSTNode.
Вот мой код:
public static class Iterator<E>
{
private Stack<BSTNode<E>> stack;
public Iterator(BSTNode<E> node)
{
}
public boolean hasNext()
{
if(stack.peek() != null)
{
return true;
}
else
{
return false;
}
}
public E next()
{
stack.pop();
E value;
value = (E) stack.pop();
return value;
}
}
На данный момент, просто игнорируйте два других метода, мне просто нужна помощь с методом Iterator.Я выясню это позже.Спасибо.
Я обнаружил, что моя проблема в другом классе и методе.Я настроил это так, и я хочу знать, является ли это правильным способом сделать это.
Инструкции для этого метода:
для создания и возврата экземпляра статического вложенного класса Iterator, который будет использоваться для перебора элементов дерева.Корень дерева изначально должен быть передан в конструктор итератора.
Вот следующий код, который я сделал для этого метода:
public Iterator<E> iterator()
{
return new Iterator<>(root);
}
root - вершина дерева двоичного поиска,Именно в этом классе как частная переменная