Я пишу рекурсивный вызов, чтобы увидеть, находятся ли два узла (n & m) внутри поддерева в двоичном дереве. Вот функция:Параметр рекурсии Java
public static boolean containsNodes(int n, int m, TreeNode node, int count){
if(node == null) return false;
if(count == 2) return true;
if(node.getData() == m || node.getData() == n){
count++;
}
return containsNodes(n, m, node.getLeft(), count) ||
containsNodes(n, m, node.getRight(), count);
}
Это выглядит подсчитывать любит никогда не получать обновляется в дальнейшем вызывает даже если условие node.getData() == m || node.getData() == n
верно. Почему это так?
Рассмотрим простой 3 узла дерева (родителя с 2 детьми). Родительский узел имеет один левый и один правый узел. Даже если данные являются «n» и «m» соответственно для левого и правого, этот метод будет терпеть неудачу, поскольку счетчик не зависит от каждой ветви. Возможно, вам лучше передать объект, содержащий счетчик, вместо примитива для определения счетчика, так как проблема передачи здесь вызывает проблему. Возможно, я неправильно понял, как вы хотите, чтобы он работал. –