Hallo, ich will eine Funktion programmieren, die herausfindet, ob ein Wert (o) in einem Baum (tree) enthalten ist. Das ganze soll rekursiv implementiert werden. Leider wirft er mir immer eine Fehlermeldung, kann mir jemand helfen ? Der Fehler müsste in boolean containsValueRec liegen.
Main:
Ausgabe:
Java:
boolean containsValue(Object o)
{
return containsValueRec(o, this.root);
}
private boolean containsValueRec(Object o, Node tree) // hier muss der Fehler liegen
{
boolean result = false;
if (o == null)
return result;
else
{
if(o == tree.value)
{
result = true;
}
else
{
containsValueRec(o, tree.left);
containsValueRec(o, tree.right);
}
}
return result;
}
Main:
Java:
public static void main(String[] args)
{
MyTreeMap baum = new MyTreeMap();
baum.put(5, "Hans");
baum.put(200,"Peter");
baum.put(2, "Werner");
baum.put(30, "Sascha");
baum.inorderPrint(baum.root);
System.out.println("Wert an Stelle 30: "+baum.get(30));
// Aufgabe
Object suche_nach = "Werner";
boolean erg = baum.containsValue(suche_nach); // Fehler
System.out.println("Objekt mit Wert \""+suche_nach+"\" im Baum enthalten? ");
System.out.println(erg);
Ausgabe:
Java:
Exception in thread "main" java.lang.NullPointerException
at MyTreeMap.containsValueRec(MyTreeMap.java:154)
at MyTreeMap.containsValueRec(MyTreeMap.java:160)
at MyTreeMap.containsValueRec(MyTreeMap.java:160)
at MyTreeMap.containsValueRec(MyTreeMap.java:161)
at MyTreeMap.containsValue(MyTreeMap.java:141)
at MyTreeMap.main(MyTreeMap.java:339)
(2,Werner)
(5,Hans)
(30,Sascha)
(200,Peter)
Wert an Stelle 30: Sascha