Hallo zusammen,
hab eine Fragestellung vor mir liegen die einen Iterator verlangt der für Binärbäume in korrekter linearer Präfix-Repräsentation repräsentieren soll.
Leider kann ich damit nicht wirklich etwas anfangen. Hab auch schon gesucht und finde nichts zum Thema nur zu SuffixBäume aber nicht was man bei einer Ausgabe von einem Binärbaum unter linearer Präfix Repräsentation versteht :-(
Hier mal der Code der gegeben ist:
Das erste Problem ist eben schon das ich nicht genau weiß was unter linearer Präfix - Repräsentation zu verstehen ist.
Das zweite Problem ist das ich es nicht als normalen Binärbaum gelöst bekomme sondern die Elemente T vergleichbar mache und dann sortiere und der Reihenfolge nach ausgebe! Ob das so gedacht war weiß ich nicht =(
Hier mal meine Lösung:
hab eine Fragestellung vor mir liegen die einen Iterator verlangt der für Binärbäume in korrekter linearer Präfix-Repräsentation repräsentieren soll.
Leider kann ich damit nicht wirklich etwas anfangen. Hab auch schon gesucht und finde nichts zum Thema nur zu SuffixBäume aber nicht was man bei einer Ausgabe von einem Binärbaum unter linearer Präfix Repräsentation versteht :-(
Hier mal der Code der gegeben ist:
Java:
public class PrefixBintree<T> implements Bintree<T> {
protected List<T> rep = new ArrayList<T>();
public Iterator<T> iterator() {
}
}
Interface Iterator<X> {
X next();
}
Das erste Problem ist eben schon das ich nicht genau weiß was unter linearer Präfix - Repräsentation zu verstehen ist.
Das zweite Problem ist das ich es nicht als normalen Binärbaum gelöst bekomme sondern die Elemente T vergleichbar mache und dann sortiere und der Reihenfolge nach ausgebe! Ob das so gedacht war weiß ich nicht =(
Hier mal meine Lösung:
Java:
public class PrefixBintree<T extends Comparable<? super T>> implements Bintree<T> {
protected List<T> rep = new ArrayList<T>();
PrefixBintree(T... ts) {
rep = Arrays.asList(ts);
}
public Iterator<T> iterator() {
return new Iterator<T>() {
private List<T> l = new ArrayList<>(rep);
private boolean b = true;
private void sort() {
Collections.sort(l);
}
@Override
public boolean hasNext() {
// TODO Auto-generated method stub
if (b) {
sort();
b = false;
}
return !l.isEmpty();
}
@Override
public T next() {
// TODO Auto-generated method stub
if (hasNext())
return l.remove(0);
return null;
}
};
}
public static void main(String[] args) {
PrefixBintree<Integer> pb = new PrefixBintree<>(11, 4, 19, 1, 33, 896, 12, 653, 357, 7);
Iterator<Integer> it = pb.iterator();
while (it.hasNext())
System.out.print(it.next() + " ");
}
}