Этот проект, над которым я работаю, требует, чтобы дерево выражений было построено из строки одноразрядных операндов и операторов, представленных как символ типа. Я сделал приведение, и программа до этого момента отлично работает. Я могу корректно печатать обходные, предварительные и послевоенные обходы.Оценка дерева выражений
Последняя часть призывает к evaulating дерево выражений. Параметрами являются дерево выражений «t» и корень «root». Дерево выражений есть ((3 + 2) + (6 + 2)), которое равно 13. Вместо этого я получаю 11 в качестве ответа. Понятно, что я здесь что-то пропустил, и я сделал все, что не ударило головой о стол.
Буду признателен, если кто-то может указать мне в правильном направлении.
(Обратите внимание, что в данный момент я только тестирование добавления и добавлю в других операторах, когда я получаю этот метод работать.)
public int evalExpression(LinkedBinaryTree t, BTNode root) {
if(t.isInternal(root)) {
int x = 0, y = 0, value = 0;
char operator = root.element();
if(root.getLeft() != null)
x = evalExpression(t, t.left(root));
if(root.getRight() != null)
y = evalExpression(t, t.right(root));
if(operator == '+') {
value = value + Character.getNumericValue(x) + Character.getNumericValue(y);
}
return value;
} else {
return root.element();
}
}
Я понял, в чем проблема. Значение в блоке else должно возвращать Character.getNumericValue (root.element()). Сейчас все работает так, как должно. – Phronima