Bäume - containsValueRec

Wuhsaa

Mitglied
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.

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
 

Zurück
Oben