Je syntakticky správný Java. Ale já nechápu, jak by to mohlo být to, co máte v úmyslu.
Zdá se, že parametr ‚prvek‘ je věc, kterou hledáte a ‚první‘ pole v aktuální třídě je kořenem binárního stromu.
Je to jasné, pokud je klíč pro binární strom a vyhledávání (ve třídě Element) je ‚aktiva‘ nebo ‚údaje‘. Dále jen ‚menší než‘ test používá ‚aktivum‘, zatímco ‚větší než‘ ‚dat‘ test používá. Zdá se pravděpodobné, že oba řádky by měly používat stejné pole. Mohlo by se stát, že jeden z těchto dvou polí ( ‚aktiva‘ nebo ‚údaje‘) by se to být uvedeno v této metodě vůbec. Možná, že poslední řádek této metody by měly být jen ‚return true;‘?
(Mám podezření, že „stav zastavení“ a „kód není symetrický“ odpovědi výše, tak nesprávné, ale mohu se mýlit:. Je těžké říci jen s kódem dané.)
Souhlasím s tím, že nekonečné smyčky, je pravděpodobné, že: Mám podezření, že je třeba vytvořit druhý funkci ‚Hledat‘, který přijímá dva ‚prvek‘ parametry - jedním z nich je věc hledat (jako aktuální parametr ‚prvek‘) a druhá je další Element vyhledávat - ekvivalent aktuální místní proměnné ‚c‘. Já bych to refaktorování „Vyjmout metodu“ na vše, co v těle současné ‚hledej‘ metody s výjimkou prvního řádku, a změnit dva rekurzivní volání používat novou metodu.
(Něco z toho je spekulativní, založená na mě hádat, co chcete, nebo máte v úmyslu, vzhledem k omezené množství informací. Takže jsem mohl samozřejmě být docela špatné.)