Ich hänge seit Stunden über dieser Aufgabe und komme einfach nicht weiter... daher schick ich sie jetzt einfach mal rein, vielleicht kann mir jemand weiterhelfen 
Aufgabe:
Implementieren Sie die Methode transformTree(), welche eine Wurzel des Types TreeNo- deBinary, und somit auch den Baum, übergeben bekommt, und einen neuen Baum des Types TreeNodeBinaryLevel konstruiert. Der neue Baum soll um die Information current- Level erweitert werden, welche beschreibt, auf welcher Höhe sich der betrachtete Knoten befindet, wobei eine Wurzel immer die Höhe 0 hat, und bei jeder weiteren Ebene das Attribut currentLevel um 1 inkrementiert wird. Zurückgegeben soll die Wurzel des neuen Baumes, wobei die Struktur des Baumes und die Arraylisten der Knoten identisch sein sollen, inklusive der neu berechneten Information currentLevel.
Zusatzinformationen:
Achten Sie darauf, dass alle Klassen, mit denen die Knoten initialisiert werden, gema ̈ß der Hierarchie in der Baumstruktur auch die Klassenhierarchie in Java umsetzen. Dies kann bedeuten, dass die Wurzel die Oberklasse aller anderen Klassen der Knoten nutzt, und die Bla ̈tter Unterklassen der Wurzel, als auch aller Klassen der Knoten nutzt, die auf dem Weg zu den Bla ̈ttern traversiert werden mu ̈ssen. Bedenken Sie jedoch, dass die Methoden Ihrer Implementierung u ̈ber kein Wissen der Klassenhierarchie verfu ̈gen. Dies fu ̈hrt dazu, dass Ihre Methoden schwa ̈chere Annahmen umsetzen mu ̈ssen, und implizieren somit, dass ggf. sich der generische Typ eines Ihrer Knoten und der dazu geho ̈rige Klassenparameter, der in der Klasse des Knotens gesetzt wird, unterscheiden.
Nehmen Sie auch zur Kenntnis, dass die Knoten der Klasse TreeNodeBinary u ̈ber ein Attribut keys des Types ArrayList verfu ̈gen, welches den Inhalt der Knoten darstellt. Diese Attribute sind abha ̈ngig von einem generischen Parameter.
Hier meine TreeNodeBinary Klasse:
Hier meine TreeNodeBinaryLevel Klasse:
Und hier nur das, wo mein Problem liegt: die transformTree() Methode, soweit wie ich es verstehe (ist halt nicht richtig):
Tausend Dank für jede Antwort!!!
Aufgabe:
Implementieren Sie die Methode transformTree(), welche eine Wurzel des Types TreeNo- deBinary, und somit auch den Baum, übergeben bekommt, und einen neuen Baum des Types TreeNodeBinaryLevel konstruiert. Der neue Baum soll um die Information current- Level erweitert werden, welche beschreibt, auf welcher Höhe sich der betrachtete Knoten befindet, wobei eine Wurzel immer die Höhe 0 hat, und bei jeder weiteren Ebene das Attribut currentLevel um 1 inkrementiert wird. Zurückgegeben soll die Wurzel des neuen Baumes, wobei die Struktur des Baumes und die Arraylisten der Knoten identisch sein sollen, inklusive der neu berechneten Information currentLevel.
Zusatzinformationen:
Achten Sie darauf, dass alle Klassen, mit denen die Knoten initialisiert werden, gema ̈ß der Hierarchie in der Baumstruktur auch die Klassenhierarchie in Java umsetzen. Dies kann bedeuten, dass die Wurzel die Oberklasse aller anderen Klassen der Knoten nutzt, und die Bla ̈tter Unterklassen der Wurzel, als auch aller Klassen der Knoten nutzt, die auf dem Weg zu den Bla ̈ttern traversiert werden mu ̈ssen. Bedenken Sie jedoch, dass die Methoden Ihrer Implementierung u ̈ber kein Wissen der Klassenhierarchie verfu ̈gen. Dies fu ̈hrt dazu, dass Ihre Methoden schwa ̈chere Annahmen umsetzen mu ̈ssen, und implizieren somit, dass ggf. sich der generische Typ eines Ihrer Knoten und der dazu geho ̈rige Klassenparameter, der in der Klasse des Knotens gesetzt wird, unterscheiden.
Nehmen Sie auch zur Kenntnis, dass die Knoten der Klasse TreeNodeBinary u ̈ber ein Attribut keys des Types ArrayList verfu ̈gen, welches den Inhalt der Knoten darstellt. Diese Attribute sind abha ̈ngig von einem generischen Parameter.
Hier meine TreeNodeBinary Klasse:
Java:
import java.util.ArrayList;
public class TreeNodeBinary<T> {
public Class<T> type;
public ArrayList<T> keys;
public TreeNodeBinary<? extends T> left;
public TreeNodeBinary<? extends T> right;
public TreeNodeBinary() {
}
public TreeNodeBinary(Class<T> type) {
this.type = type;
}
/**
* @return the generic type of the node
*/
public Class<T> getType() {
return type;
}
}
Hier meine TreeNodeBinaryLevel Klasse:
Java:
import java.util.ArrayList;
public class TreeNodeBinaryLevel<T> {
public Class<? extends T> type;
public ArrayList<T> keys;
public TreeNodeBinaryLevel<? extends T> left;
public TreeNodeBinaryLevel<? extends T> right;
public int currentLevel;
public TreeNodeBinaryLevel(Class<? extends T> type) {
this.type = type;
}
/**
* @return the generic type of the node
*/
public Class<? extends T> getType() {
return type;
}
}
Und hier nur das, wo mein Problem liegt: die transformTree() Methode, soweit wie ich es verstehe (ist halt nicht richtig):
Java:
public class GenericOperations {
public static <T> TreeNodeBinaryLevel<T> transformTree(TreeNodeBinary<T> root) {
int currentLevel;
TreeNodeBinaryLevel newTree = new TreeNodeBinaryLevel(/*Class*/ null);
if(/*node*/ == 0) {
currentLevel = 0;
}else {
//calculate current Level
}
//expand newTree via information "currentLevel"
return newTree.root; //return root of newTree
}
}
Tausend Dank für jede Antwort!!!