Anzahl Knoten im Binären Baum |
13.05.2015, 21:08 | Auf diesen Beitrag antworten » | ||||||||||
vickal93 | Anzahl Knoten im Binären Baum Meine Frage: Ich hänge ziemlich an einer Methode, und zwar sollte man hier die Anzahl der Knoten berehcnen. Der vorgegebene Code ist:
Meine Ideen: Meine Idee war folgende:
Jedoch gibt er mit statt 7 Knoten nur einen raus. An sich bearbeite ich das doch rekursiv, ich weiß deswegen nciht wo mein Fehler ist. Bitte um Hilfe! |
||||||||||
|
|||||||||||
13.05.2015, 21:15 | Auf diesen Beitrag antworten » | ||||||||||
eulerscheZahl | Wenn du links und rechts vorher erst definierst und nicht initialisierst, sind die null. Du musst bei der wurzel starten und davon den rechten und linken Knoten nehmen, nicht von neu erstellten Variablen.
|
||||||||||
13.05.2015, 21:18 | Auf diesen Beitrag antworten » | ||||||||||
vickal93 | Ja, ursprünglich habe ich auch alles mögliche mit wurzel versucht... Aber vielen Dank! Sehe ich das dann richtig, dass man diese Methode ohne einem Parameter nicht lösen kann, sondern eben eine Art Hilfsmethode braucht? (Auf diese Idee bin ich nämlich nicht gekommen. :hammer |
||||||||||
13.05.2015, 21:25 | Auf diesen Beitrag antworten » | ||||||||||
eulerscheZahl | Irgendwo musst du die aktuelle Position speichern, wo du dich im Baum befindest und von welchem Knoten du die Kinder zählen willst. Bei der Höhe hast du es ja auch auf die Weise gemacht. PS: habe oben einen Fehler: wenn die wurzel null ist, gibt es bei mir eine Exception, die beim letzten Test auch ausgelöst wird. |
||||||||||
Anzeige | |||||||||||
|
|||||||||||
13.05.2015, 21:32 | Auf diesen Beitrag antworten » | ||||||||||
vickal93 | Ist mir auch grad aufgefallen, aber habe den Fehler in der anzahlKnoten() Methode beseitigt. Danke nochmal! |
||||||||||
14.05.2015, 11:27 | Auf diesen Beitrag antworten » | ||||||||||
Batista | Ist der <INHALT> wichtig? public int anzahlKnoten(Knoten<INHALT> knoten) { kann man nicht auch public int anzahlKnoten(Knoten knoten) { schreiben? |
||||||||||
14.05.2015, 11:32 | Auf diesen Beitrag antworten » | ||||||||||
eulerscheZahl | Batista, ich dachte, das hätten wir HIER geklärt? |
||||||||||
14.05.2015, 11:36 | Auf diesen Beitrag antworten » | ||||||||||
Batista |
Hier sagst du doch Knoten<INHALT>) funktioniert nicht? aber genau das verwendest du hier? |
||||||||||
14.05.2015, 11:40 | Auf diesen Beitrag antworten » | ||||||||||
eulerscheZahl | Bitte im Zusammenhang zitieren. Der Codeausschnitt oberhalb des Zitats funktioniert bei Generics nicht mehr, und das ist genau der Sinn von Generics. Du kannst hier schon zur Compilezeit sicherstellen, dass nicht verschiedene Datentypen vermischt werden. |
||||||||||
14.05.2015, 11:46 | Auf diesen Beitrag antworten » | ||||||||||
Batista | Ich dachte ich hätte es verstanden Man hat den code code .... public int anzahlKnoten(Knoten<INHALT> knoten) { ... code public static void main(String[] args) { Knoten<Integer> k1 = new Knoten<Integer>(3, null, null); Knoten<Float> k2 = new Knoten<Float>(3.2f, null, null); k1.suche(k2); } würde The method suche(Knoten<Integer>) in the type Knoten<Integer> is not applicable for the arguments (Knoten<Float>) das liefern? |
||||||||||
14.05.2015, 11:50 | Auf diesen Beitrag antworten » | ||||||||||
eulerscheZahl | Richtig, und genau das Verhalten ist gewünscht, wenn man will, dass entweder nur Ganzzahlen oder nur Gleitpunktzahlen im Baum stehen. Und wenn ein anderer Programmierer deine Klasse verwendet, weist ihn bereits der Compiler in die Schranken, wenn er es doch versucht. Andernfalls könnte es zu einer RuntimeException führen, die der Programmierer vielleicht gar nicht entdeckt, sondern erst der Endanwender. |
||||||||||
16.05.2015, 17:55 | Auf diesen Beitrag antworten » | ||||||||||
Batista | @eulerscheZahl Kannst du bitte folgendes ansehen, und kurzes ja oder nein, ob die Methode richtig funktioniert ? /** Anzahl der Knoten zaehlen */ public int anzahlKnoten() { return anzahlKnoten(wurzel); } /** Rekursive anzahlKnoten */ private int anzahlKnoten(Knoten k){ if (k==null){ return 0; }else{ return 1 + anzahlKnoten(k.links)+anzahlKnoten(k.rechts); } } |
||||||||||
16.05.2015, 17:58 | Auf diesen Beitrag antworten » | ||||||||||
eulerscheZahl | Ich gebe dir ein ja |
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
Die Neuesten » |
|