Это синтаксически правильная Java.Но я не понимаю, как он мог бы делать то, что вы намеревались.
Похоже, что параметр 'element' - это то, что вы ищете, а первое поле в текущем классе - корень.двоичного дерева.
Неясно, является ли ключ для двоичного дерева и поиска (в классе Element) «активом» или «данными».Тест «меньше чем» использует «актив», а тест «больше чем» использует «данные».Вполне вероятно, что обе строки должны использовать одно и то же поле.Может случиться так, что одно из этих двух полей ('актив' или 'данные') должно не быть упомянуто в этом методе вообще.Может быть, последняя строка метода должна быть просто «вернуть истину»?
(я подозреваю, что ответы «условие остановки» и «код не симметричны» выше оба неверны. НоЯ могу ошибаться: трудно сказать только с указанным кодом.)
Я согласен, что бесконечный цикл вероятен: я подозреваю, что вам нужно создать вторую функцию поиска, которая принимает дваПараметры элемента - один для поиска (например, текущий параметр элемента), а другой - следующий для поиска элемент - эквивалент текущей локальной переменной 'c'.Я бы сделал рефакторинг «Извлечь метод» для всего в теле текущего метода «поиска», кроме первой строки, а затем изменил бы два рекурсивных вызова, чтобы использовать новый метод.
(Некоторыеэто спекулятивный вопрос, основанный на том, что я угадал, что вы хотите или намереваетесь, учитывая ограниченную информацию. Поэтому я могу, конечно, ошибаться.)