Ergänzen Sie die Klasse
Tree
aus der Vorlesung um folgende weitere Methoden:
- void forEach(Consumer<? super E> con);
Das Argument soll auf alle Elemente des Baumes angewendet werden.
- boolean contains(Predicate<? super E> pred);
Enthält der Baum ein Element, das das Prädikat erfüllt?
- void fringe(List<E> result);
Alle Elemente an Blättern des Baumes werden in einer Liste gesammelt.
- void ancestors(List<E> result);
Alle Elemente von eigenen Vorfahren, sortiert vom Element des Elternknoten hin zur Wurzel.
- void siblings(List<E> result);
Alle Elemente meiner Geschwister.
- void pathTo(E elem, List<E> result);
Wenn es einen Pfad von mir zu einem Nachkommen mit dem Element elem gibt, ist der Pfad in der Liste, ansonsten ist die Liste leer.
- <R> Tree<R> map(Function<? super E, ? extends R> f);
Erzeuge einen neuen Baum, indem alle Elemente mit der Funktion f transformiert werden.