Guten Abend,
ich muss einen Iterator für einen trinären, generischen Baum implementieren. Jeder Baum hat einen Value vom Typ E und 3 Kinder (left, center, right), die selbst wiederum trinäre Bäume sind.
Der Iterator soll rekursiv die Iteratoren der Teilbäume verwenden und dabei zuerst den linken Teilbaum, den mittleren Teilbaum, den rechten Teilbaum und dann den Knoten selbst ablaufen. Wie kann ich da rangehen? Als Tipp wurde mir gegeben, dass es sinnvoll wäre, wenn jeder Iterator eine Liste der "Kinditeratoren" hätte, die man dann abarbeiten kann.
Meine Klasse sieht bisher so aus:
ich muss einen Iterator für einen trinären, generischen Baum implementieren. Jeder Baum hat einen Value vom Typ E und 3 Kinder (left, center, right), die selbst wiederum trinäre Bäume sind.
Der Iterator soll rekursiv die Iteratoren der Teilbäume verwenden und dabei zuerst den linken Teilbaum, den mittleren Teilbaum, den rechten Teilbaum und dann den Knoten selbst ablaufen. Wie kann ich da rangehen? Als Tipp wurde mir gegeben, dass es sinnvoll wäre, wenn jeder Iterator eine Liste der "Kinditeratoren" hätte, die man dann abarbeiten kann.
Meine Klasse sieht bisher so aus:
Java:
public class TernaerTree<E> implements Iterable<E> {
private TernaerTree<E> left;
private TernaerTree<E> center;
private TernaerTree<E> right;
private E value;
public E getValue(){
return value;
}
public TernaerTree<E> getTree(){
return this;
}
public TernaerTree(TernaerTree<E> left, TernaerTree<E> center, TernaerTree<E> right, E value) {
this.left = left;
this.center = center;
this.right = right;
this.value = value;
}
@Override
public Iterator<E> iterator() {
return new WalkThroughIterator();
}
class WalkThroughIterator implements Iterator<E> {
@Override
public boolean hasNext() {
// TODO Auto-generated method stub
return false;
}
@Override
public E next() {
// TODO Auto-generated method stub
return null;
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
}
}