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?
 
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?
 
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
 
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?
 
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
 
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:
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 😛
 
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 😛

Danke, du hast recht 🙂
Ich kann die Verundung durch ein + ersetzen.
 

Zurück
Oben