Я пытаюсь найти способ перебора двоичного дерева рекурсивно итеративно и подсчитать, сколько раз находить определенное значение. Одна проблема, с которой я столкнулся, - это root в первом методе.Подсчет узлов с определенным значением в двоичном дереве
Node внутренний класс:
private class Node {
int data;
Node root;
Node left;
Node right;
}
Рекурсивный метод & помощника:
public int valCount(int val) {
if (root != null) {
return valCount(val, root);
}
return 0;
}
public int valCount(int val, Node root) {
int cnt = 0;
if (root.left != null) {
if (root.left.data == val) {
cnt++;
}
valCount(val, root.left);
}
if (root.right != null) {
if (root.right.data == val) {
cnt++;
}
valCount(val, root.right);
}
return cnt;
}
Я не был в состоянии проверить из корня вопроса, так что я не совсем уверен, что мой выход будет быть верным. Итак, вопрос требует, чтобы его спросили ... я даже на правильном пути? Мой подход даже имеет смысл? Любая помощь была бы потрясающей. Ура!
Пропустите 'cnt' также в рекурсивном вызове и определите' cnt' в области 'class'. – Prateek