Il est syntaxiquement correct Java. Mais je ne vois pas comment il pourrait peut-être faire ce que vous avez l'intention.
Il semble que le paramètre « élément » est la chose que vous recherchez et le champ « première » dans la classe actuelle est la racine de l'arbre binaire.
On ne sait pas si la clé de l'arbre binaire et la recherche (dans la classe Element) est « actif » ou « données ». Le « moins » test utilise « actif », alors que le « plus grand que » utilisations de test « données ». Il semble probable que les deux lignes devraient utiliser le même champ. Il est peut - être que l' un de ces deux domaines ( « actifs » ou « données ») devrait ne pas être référencé dans cette méthode du tout. Peut - être la dernière ligne de la méthode doit être juste « return true; »?
(Je soupçonne que la « condition d'arrêt » et le « code n'est pas symétrique » réponses ci-dessus sont à la fois erronée, mais je peux me tromper. Il est difficile de dire avec seulement le code donné.)
Je suis d'accord que boucle infinie est probable: Je pense que vous devez créer une deuxième fonction « recherche » qui accepte deux paramètres « élément » - l'une étant la chose à rechercher (comme le paramètre « élément » courant) et l'autre l'élément suivant à la recherche - l'équivalent de la variable locale actuelle « c ». Je ferais le refactoring sur tout « Extraire la méthode » dans le corps de la méthode « recherche » en cours, sauf la première ligne, puis modifiez les deux appels récursifs à utiliser la nouvelle méthode.
(Une partie de c'est spéculative, basée sur moi deviner ce que vous voulez ou avez l'intention, compte tenu des informations limitées. Je pourrais, bien sûr, tout à fait faux.)