Hallo zusammen,
das was ich gemacht habe Funktioniert zwar doch leider finde ich es Persönlich viel zu umständlich. Ich laufe beim ermitteln des Level eines bestimmten Knoten z. B. zwei mal rekursiv durch. Das Problem ist ich rechne pro Ebene immer +1 doch wenn ein Knoten nicht gefunden wird bekomme ich ja auch ein Rückgabe wert
Hier mal mein Code:
Wie bekomme ich das finde des Levels in 1 Rekusive Methode? und wie kann ich den ElternKnoten des gesuchten Knotens rekusiv bestimmen?
LG
das was ich gemacht habe Funktioniert zwar doch leider finde ich es Persönlich viel zu umständlich. Ich laufe beim ermitteln des Level eines bestimmten Knoten z. B. zwei mal rekursiv durch. Das Problem ist ich rechne pro Ebene immer +1 doch wenn ein Knoten nicht gefunden wird bekomme ich ja auch ein Rückgabe wert
Hier mal mein Code:
Java:
public int level(T o) {
int count = 0;
if(find(o))
return level(o, root);
return count;
}
private int level(T value, Node<T> current) {
if (current == null)
return -1;
int cmp = value.compareTo(current.getKey());
if (cmp == 0)
return 1;
if (cmp < 0)
return 1+level(value, current.getLeft());
return 1+level(value, current.getRight());
}
private boolean find(T value) {
return findRecursive(value, root);
}
private boolean findRecursive(T value, Node<T> current) {
if (current == null)
return false;
int cmp = value.compareTo(current.getKey());
if (cmp == 0)
return true;
if (cmp < 0)
return findRecursive(value, current.getLeft());
return findRecursive(value, current.getRight());
}
public T findParent(T x){
if(!find(x))
return null;
boolean foo = true;
TreeNode<T> tmp = root;
T h = tmp.getKey();
while(foo) {
int cmp = x.compareTo(tmp.getKey());
if (cmp == 0)
foo = false;
else if(cmp < 0) {
h = tmp.getKey();
tmp = tmp.getLeft();
}
else if(cmp > 0) {
h = tmp.getKey();
tmp = tmp.getRight();
}
}
return h;
}
Wie bekomme ich das finde des Levels in 1 Rekusive Methode? und wie kann ich den ElternKnoten des gesuchten Knotens rekusiv bestimmen?
LG