Gaggi123
Ensign
- Registriert
- Feb. 2007
- Beiträge
- 248
Hallo zusammen!
Ich knobel mir momentan die Birne weich aber eventuell übersehe ich auch nur etwas:
Ich möchte gerne den Inhalt eines Baumes mittels Iterator in eine LinkedList<T> adden. Die Funktionen für die LinkedList kann ich aus dem java.util importieren. Mir geht es primär um die Implementation des Iterators in Zeile 24 und 25:
Ich knobel mir momentan die Birne weich aber eventuell übersehe ich auch nur etwas:
Ich möchte gerne den Inhalt eines Baumes mittels Iterator in eine LinkedList<T> adden. Die Funktionen für die LinkedList kann ich aus dem java.util importieren. Mir geht es primär um die Implementation des Iterators in Zeile 24 und 25:
Code:
// (C) 2009-10 Ralf Laemmel
package tree;
import java.util.Iterator;
import java.util.LinkedList;
public class BinTrees<T> implements Iterator<T> {
public T info;
public BinTrees<T> left, right;
private Iterator<T> treeIterator;
public void print() {
System.out.println(this.info);
if (left != null)
left.print();
if (right != null)
right.print();
}
public LinkedList<T> convert(BinTrees<T> x) {
LinkedList<T> tmp = new LinkedList();
treeIterator = x.iterator(); // hier ist die Baumstruktur nicht
// kompatibel mit dem .iterator() Befehl
while (hasNext()) {
tmp.add(treeIterator.next());
}
return tmp;
}
public static int sum(BinTrees<Integer> x) {
return x == null ? 0 : x.info + (x.left != null ? sum(x.left) : 0)
+ (x.right != null ? sum(x.right) : 0);
}
public static void main(String[] args) {
BinTrees<Integer> t1 = new BinTrees<Integer>();
BinTrees<Integer> t11 = new BinTrees<Integer>();
BinTrees<Integer> t12 = new BinTrees<Integer>();
BinTrees<Integer> t121 = new BinTrees<Integer>();
t1.info = 1;
t1.left = t11;
t1.right = t12;
t11.info = 2;
t12.info = 3;
t12.left = t121;
t121.info = 4;
t1.print();
System.out.println(sum(t1));
System.out.println("To LinkedList: ");
System.out.println(t1.convert(t1));
}
public boolean hasNext() {
if (left == null && right == null) {
return false;
}
return true;
}
public T next() {
while (hasNext()) {
if (left != null) {
left.next();
}
if (right != null) {
right.next();
}
}
return info;
}
public void remove() {
// TODO Auto-generated method stub
}
}