私は再帰が嫌いで、コードを簡単にトレースすることはできませんが、ツリーでは選択の余地がありません。
これは私がこれまでに試したことです。
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