Binärbäume in linearer Präfix-Repräsentation

ocsme

Top Contributor
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:
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() + " ");

    }
}
 

ocsme

Top Contributor
dann wäre die nächste Frage wie ist der Baum in der Liste rep gespeichert =D in Level Order Repräsentation oder wie? mhhh...
Denn anders könnte der Iterator ein 1 zeiler sein wenn die Knoten in rep richtig abgelegt sind indem man nur von der List<T> den Iterator aufruft fertig.
Die Aufgabe scheint zu undurchsichtig zu sein schade!
 

Ähnliche Java Themen

Neue Themen


Oben