Algorithmus zum auswerten eines binären Ausdrucks-Baum?

Ich hasse Rekursion, kann ich nicht nachvollziehen, durch den code leicht, aber mit Bäumen, die ich nicht haben eine Wahl.

Dies ist, was ich bisher ausprobiert habe.

private int evaluate(Node n)
{
    if (n != null)
    {
        if (n.isLeaf())  //n is a node with a number
            return Integer.parseInt(n.element);
        else
        {
            int left = evaluate(n.left);
            int right = evaluate(n.right);
            return calculate(left, n.element, right);
        } //end else
    } //end if
} //end evaluate
  • Hast du gut gemacht, alles, was Sie brauchen, ist eine triviale, nicht-rekursive calcilate zum Abschluss Ihrer übung. ...Und nicht vergessen, die Rückkehr.
  • Was ist die Frage?
  • Es wäre viel geholfen, wenn Sie auch gepostet, das problem haben Sie mit Ihrem code. Es ist "- Methode muss einen Wert zurückgeben".
  • Die Methode gibt einen Wert zurück, in einigen Fällen aber der compiler nicht verstehen.
  • Ich war Herumspielen mit der berechnen-Funktion, kann es nicht zu funktionieren so wie ich will, aber ich habe die return-Anweisung in. Aber ist die Rekursion bin ich mit sound. Ich bin ziemlich neu und die Rekursion.
  • Sie müssen einen Wert zurückgeben, wenn n == null oder werfen einen NullPointerException.
  • Sie nicht brauchen, um überhaupt Rekursion verwenden, können Sie erreichen, was Sie wollen mithilfe von for-Schleifen. Sie brauchen nur zu verwenden einen stack, denken Sie an Ihre aktuellen und übergeordneten Staaten.

Schreibe einen Kommentar