class main{publicstaticvoid main (String[] args){Tree t =newTree();
t.insert(5); t.insert(6); t.insert(6);
t.insert(3); t.insert(2); t.insert(6);System.out.println(t.verschieden());}}
Ziel ist es mit verschieden() zu schauen ob das Kind im Baum den gleichen Wert hat wie die aktuelle Wurzel. Das wollte ich rekursiv machen, also jede Wurzel dann die 2 Kinder durchgehen und wieder schauen. Aber bei dem
Die if - Bedingung soll machen, dass wenn die aktuelle Wurzel leer ist, nichts für die gemacht wird und halt mit der nächsten weitergemacht wird(es wird ja zuerst ganz nach rechts gegangen und dann wenn das durch ist nach links).
Fehlermeldung
Java:
Execption in thread "main" java.lang.NullPointerException
at Tree.verschieden(Tree.java:83)
at Tree.verschieden(Tree.java:86)
at Tree.verschieden(Tree.java:86)
at main.main(main.java:12)
at Tree.verschieden(Tree.java:83) ist Zeile "if(wurzel.wert == wurzel.rechts.wertt() || wurzel.wert == wurzel.links.wertt()){"
at Tree.verschieden(Tree.java:86) ist Zeile "wurzel.rechts.verschieden();"
at main.main(main.java:12) ist Zeile "System.out.println(t.verschieden());"
Es sind ein paar unabhängige funktionierende Methoden dazwischen deshalb die hohen Zeilennummern.
PS: Es ist gut möglich das die ganze Methode Käse ist, aber was besseres habe ich in etwa 3 stunden nicht zu Tage gebracht.
Die if - Bedingung soll machen, dass wenn die aktuelle Wurzel leer ist, nichts für die gemacht wird und halt mit der nächsten weitergemacht wird(es wird ja zuerst ganz nach rechts gegangen und dann wenn das durch ist nach links).
Das habe ich verstanden. Allerdings müsste doch dann im If-Block ein Return-Statement sein oder der Rest des Codes im Else-Block? So prüfst du zwar auf isEmpty, machst aber unabhängig des Ergebnisses weiter.
Wenn er gleiche gefunden hat kann er gerne sofort abbrechen, ansonsten halt alles weiterdurchsuchen. wenn es auf einen empty gestoßen ist sind ja (zumindest beim ersten) noch wurzeln über die er noch nicht abgesucht hat... ich weiß nicht wie ich das machen soll
Den Ablauf der Methode hast du ja verstanden. Wenn du es dir Schritt für Schritt als "Programmablaufplan" skizzierst, dann sollte die Umsetzung leichter fallen. Kannst du dein Programm mal auf dem Blatt Papier durchlaufen?
Was aktuell unstimmig ist,
- bei der isEmpty musst du die Rekursion entsprechend beenden
- du hast ein Rückgabewert bei verschieden, nutzt ihn aber nicht