Когда вы выполняете рекурсию на allE
, вам необходимо учитывать результат этой рекурсии. Самое простое исправление, которое я вижу, заменить
allE(x.getLeft());
allE(x.getRight());
return true;
на
return allE(x.getLeft()) && allE(x.getRight());
Хотя, я думаю, что имеет смысл написать алгоритм так, чтобы вы использовали его явно, даже в явном виде. И allE
сохраняет три буквы по сравнению с allEven
(, пожалуйста используйте значимые имена для методов и переменных). Что-то вроде
static boolean allEven(Tree<Integer> node) {
if (node.isEmpty()) {
return true;
} else if (node.getValue() % 2 == 0) {
return allEven(node.getLeft()) && allEven(node.getRight());
}
return false;
}