Guten Abend,
ich habe hier eine Klasse TernaerTree<E> geschrieben auf der ein Iterator laufen soll.
Der Baum ist im Prinzip eine Erweiterung des Binärbaums auf 3 Kindknoten, die durch eine rekursive Baumdefinition selbst wieder vom Typ TernaerTree<E> sind.
Nun komme ich bei den Methoden hasNext() und next() von Iterator durcheinander und weiß nicht so recht wie ich diese implementieren soll.
Der Iterator soll zunächst den linken Teilbaum, dann den mittleren Teilbaum, dann den rechten Teilbaum und zuletzt die Wurzel durchlaufen.
So ist in etwa meine Klasse für den Baum bisher:
Dies ist die noch etwas leere Klasse für den Iterator:
Wie man sieht habe ich für next() noch überhaupt keine Idee. Der Iterator soll rekursiv die Iteratoren der Teilbäume verwenden.
Es wäre nett, wenn mir jemand helfen könnte, ohne fertigen Code zu liefern. Ich möchte nur wissen wie ich den Iterator implementieren muss. Das möchte ich jedoch alleine versuchen.
Danke für eure Hilfe.
ich habe hier eine Klasse TernaerTree<E> geschrieben auf der ein Iterator laufen soll.
Der Baum ist im Prinzip eine Erweiterung des Binärbaums auf 3 Kindknoten, die durch eine rekursive Baumdefinition selbst wieder vom Typ TernaerTree<E> sind.
Nun komme ich bei den Methoden hasNext() und next() von Iterator durcheinander und weiß nicht so recht wie ich diese implementieren soll.
Der Iterator soll zunächst den linken Teilbaum, dann den mittleren Teilbaum, dann den rechten Teilbaum und zuletzt die Wurzel durchlaufen.
So ist in etwa meine Klasse für den Baum bisher:
Java:
public class TernaerTree<E> {
TernaerTree<E> root;
private TernaerTree<E> left;
private TernaerTree<E> mid;
private TernaerTree<E> right;
private E value;
public E getValue() {
return value;
}
public TernaerTree<E> getTree(){
return this;
}
TernaerTree(TernaerTree<E> left,TernaerTree<E> mid, TernaerTree<E> right, E value) {
this.left = left;
this.mid = mid;
this.right = right;
this.value = value;
}
public Iterator<E> iterator() {
return new WalkThroughIterator();
}
Dies ist die noch etwas leere Klasse für den Iterator:
Java:
class WalkThroughIterator implements Iterator<E> {
Iterator<E> baumIt = root.iterator();
@Override
public boolean hasNext() {
if (root != null) {
return true;
}
else {
return false;
}
}
@Override
public E next() {
//TODO
return root.getValue();
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
}
Wie man sieht habe ich für next() noch überhaupt keine Idee. Der Iterator soll rekursiv die Iteratoren der Teilbäume verwenden.
Es wäre nett, wenn mir jemand helfen könnte, ohne fertigen Code zu liefern. Ich möchte nur wissen wie ich den Iterator implementieren muss. Das möchte ich jedoch alleine versuchen.
Danke für eure Hilfe.
Zuletzt bearbeitet: