E 'sintatticamente corretto Java. Ma non vedo come potrebbe eventualmente essere facendo quello che si intende.
Sembra che il parametro 'elemento' è la cosa si sta cercando e il campo 'prima' della classe corrente è la radice dell'albero binario.
Non è chiaro se la chiave per l'albero binario e di ricerca (nella classe Element) è 'bene' o 'dati'. Il test 'meno di' usa 'bene', mentre il 'maggiore di' 'dati' di test usi. Sembra probabile che entrambe le linee devono utilizzare lo stesso campo. Potrebbe essere che uno di questi due campi ( 'attivi' o 'dati') dovrebbe non essere fatto riferimento in questo metodo a tutti. Forse l'ultima riga del metodo dovrebbe essere solo 'return true;'?
(Ho il sospetto che la "condizione di arresto" e il "codice non è simmetrico" le risposte di cui sopra sono entrambi errati Ma potrei sbagliarmi. E 'difficile dire con solo il codice data.)
Sono d'accordo che loop infinito è probabile: ho il sospetto che è necessario creare una seconda funzione 'search' che accetta due parametri 'Element' - uno è la cosa da cercare (come il parametro corrente 'elemento') e l'altro essere il prossimo elemento per la ricerca - l'equivalente di corrente locale variabile 'c'. Vorrei fare il refactoring "Extract Method" su tutto nel corpo del metodo attuale 'ricerca', tranne la prima linea, e quindi modificare le due chiamate ricorsive per utilizzare il nuovo metodo.
(Alcune di queste è speculativo, basata su di me cercando di indovinare ciò che si desidera o ha intenzione, dato informazioni limitate. Così ho potuto, ovviamente, del tutto sbagliato.)