BinarySearchTree

Aralgut

Mitglied
Aufgabe im Anhang.

Lösung:

Code:
public int nodesAtLevel(int n)
{
    if(n<0 || isEmpty())
    {
        return 0;
    }
    else
    {
        if(n ==0)
        {
            if(leftchild.!isEmpty() || rightChild.!isEmpty())
            {
                return 1;
            }
            else
            {
                return 0;
            }
            return leftChild.nodesAtlevel(n-1) && rightChild.nodesAtLevel(n-1);
        }
    }
}

Was sagt ihr dazu?
 
K

kneitzel

Gast
Diese Methode ist nicht korrekt: Der Code return leftChild.nodesAtlevel(n-1) && rightChild.nodesAtLevel(n-1); wird nie ausgeführt, da das if davor in beiden Zweigen ein return Befehl hat. Vermutlich wolltest Du das eine Ebene tiefer haben.

Aber auch da ist das nach meinem Verständnis nicht korrekt:
a) rufst du das links und rechts auf, aber eins von beidem kann null sein -> NPE
b) Wenn Du die Werte vom linken und rechten Teilbaum hast: Wie lautet dann die Lösung?
 

Aralgut

Mitglied
Diese Methode ist nicht korrekt: Der Code return leftChild.nodesAtlevel(n-1) && rightChild.nodesAtLevel(n-1); wird nie ausgeführt, da das if davor in beiden Zweigen ein return Befehl hat. Vermutlich wolltest Du das eine Ebene tiefer haben.

Aber auch da ist das nach meinem Verständnis nicht korrekt:
a) rufst du das links und rechts auf, aber eins von beidem kann null sein -> NPE
b) Wenn Du die Werte vom linken und rechten Teilbaum hast: Wie lautet dann die Lösung?

a) NPE? Sry, bin Neuling...
b) 2, da beide Knoten sind
 
K

kneitzel

Gast
Also NPE ist kurz für NullPointerException.
Wenn leftChild null ist, und du dann leftChild.nodesAtLevel(n-1) aufrufst, dann kommt die Exception und Dein Programm bricht ab.

Also der linke Teilbaum sagt dir: 3
und der rechte Teilbaum sagt dir 4
Wie viele Nodes must Du dann weiter geben? Wirklich nur 2?
 

Aralgut

Mitglied
Also NPE ist kurz für NullPointerException.
Wenn leftChild null ist, und du dann leftChild.nodesAtLevel(n-1) aufrufst, dann kommt die Exception und Dein Programm bricht ab.

Also der linke Teilbaum sagt dir: 3
und der rechte Teilbaum sagt dir 4
Wie viele Nodes must Du dann weiter geben? Wirklich nur 2?

Ich muss beide Werte addieren. Somit hab ich dann die Anzahl
 

Aralgut

Mitglied
Also NPE ist kurz für NullPointerException.
Wenn leftChild null ist, und du dann leftChild.nodesAtLevel(n-1) aufrufst, dann kommt die Exception und Dein Programm bricht ab.

Also der linke Teilbaum sagt dir: 3
und der rechte Teilbaum sagt dir 4
Wie viele Nodes must Du dann weiter geben? Wirklich nur 2?

Muss ich statt return 1;
leftChild.getContent() + rightChild.getContent(); schreiben?

und das || durch ein && ersetzen?
 
Zuletzt bearbeitet:

ocsme

Top Contributor
Ist bei einem int Wert die Verundung so erlaubt?
Java:
return leftChild.nodesAtlevel(n-1) && rightChild.nodesAtLevel(n-1);

und bei isEmpty bekommst du ein boolean dort sollte der Komplement Operator dann vor den Ausdruck.
Code:
aus: leftchild.!isEmpty()
mache: !(leftchild.isEmpty())

Die Aufgabe finde ich super :) deswegen lese ich mal mit :p
 

Aralgut

Mitglied
Ist bei einem int Wert die Verundung so erlaubt?
Java:
return leftChild.nodesAtlevel(n-1) && rightChild.nodesAtLevel(n-1);

und bei isEmpty bekommst du ein boolean dort sollte der Komplement Operator dann vor den Ausdruck.
Code:
aus: leftchild.!isEmpty()
mache: !(leftchild.isEmpty())

Die Aufgabe finde ich super :) deswegen lese ich mal mit :p

Danke, du hast recht :)
Ich kann die Verundung durch ein + ersetzen.
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben