Джава :Рекурсивно подсчитывать четные значения в двоичном дереве поиска
-
24-09-2019 - |
Вопрос
Мне нужно узнать, сколько четных значений содержится в двоичном дереве.
это мой код.
private int countEven(BSTNode root){
if ((root == null)|| (root.value%2==1))
return 0;
return 1+ countEven(root.left) + countEven(root.right);
}
это я просто закодировал, так как у меня нет возможности это проверить.На данный момент я не могу это проверить, но мне очень нужен ответ.любая помощь глубоко ценится.
Решение
Если существует узел с нечетным значением, содержащий подузлы с четными значениями, подузлы не будут учитываться в вашем коде.Небольшое улучшение ниже.
private int countEven(BSTNode root){
if (root == null)
return 0;
int val = (root.value%2==1) ? 0 : 1;
return val + countEven(root.left) + countEven(root.right);
}
Другие советы
private int countEven(BSTNode root) {
if (root == null)
return 0;
int n = countEven(root.left) + countEven(root.right);
if(root.value % 2 == 0)
return n + 1;
else
return n;
}
Не связан с StackOverflow