Добро пожаловать! У меня есть рекурсивный публичный статический метод с наименьшим значением, который принимает узел дерева (исходное двоичное дерево, а не дерево поиска) и параметр int, который возвращает, если все значения в дереве меньше целого. Таким образом, я хотел бы использовать public class TN { public int value; public TN left, right; public TN(int v, TN l, TN r) {value = v; left = l; right = r;} }
Итак, мой метод будет выглядеть следующим образом:Рекурсивное двоичное дерево Java
public static boolean less(TN s, int toFind){
if (s == null)
return true;
else{
if(s.value <= toFind)
return less(s.left, toFind) && less(s.right, toFind); // right here do I return true? or do I have to somehow recall recursively
else
return false;
}
мне было интересно, если это было правильно, или я что-то отсутствует ??? Должен ли я возвращать истину и ложь?
Итак, для выражения else я могу просто вернуть метод вызова вместо возврата false right? – Roxy
Ну, вам нужно будет иметь относительно глобальную переменную, которую вы проверяете перед веткой. Например. "if (found == true) return false;", а затем изменить else на "else {found = true; return false}". Таким образом, если число найдено больше, чем число, которое вы ищете, оно будет установлено как true. Тогда и каждая другая ветвь вернется. Вам просто нужно убедиться, что одно и то же «найденное» видно из каждого вызова функции. – CookieOfFortune