Είναι συντακτικά σωστό Java. Αλλά δεν βλέπω πώς θα μπορούσε, ενδεχομένως, να κάνει ό, τι σκοπεύετε.
Φαίνεται ότι η παράμετρος «στοιχείο» είναι το πράγμα που ψάχνετε και η «πρώτη» τομέα στην τρέχουσα κατηγορία είναι η ρίζα του δυαδικού δέντρου.
Είναι ασαφές εάν το κλειδί για το δυαδικό δέντρο και αναζήτησης (στην κατηγορία Element) είναι «περιουσιακό στοιχείο» ή «δεδομένα». Το «λιγότερο από» τεστ χρησιμοποιεί «περιουσιακό στοιχείο», ενώ το «μεγαλύτερο από» «δεδομένα» χρήσεις της δοκιμής. Φαίνεται πιθανό ότι και οι δύο γραμμές θα πρέπει να χρησιμοποιούν το ίδιο πεδίο. Θα μπορούσε να είναι ότι ένας από αυτούς τους δύο τομείς ( «περιουσιακό στοιχείο» ή «δεδομένα») θα πρέπει να μην να αναφέρονται σε αυτή τη μέθοδο σε όλα. Ίσως η τελευταία γραμμή της μεθόδου θα πρέπει να απλά «return true?»;
(Υποψιάζομαι ότι η «κατάσταση stop» και ο «κώδικας δεν είναι συμμετρική» απαντήσεις παραπάνω είναι τόσο λανθασμένη, όμως, θα μπορούσα να κάνω λάθος. Είναι δύσκολο να πει μόνο με τον κωδικό δοθεί.)
Συμφωνώ ότι άπειρο looping είναι πιθανό: Υποψιάζομαι ότι θα πρέπει να δημιουργήσετε ένα δεύτερο «ψάξετε» λειτουργία που δέχεται δύο παραμέτρους «στοιχείο» - ο ένας να είναι το πράγμα για να αναζητήσετε (όπως η τρέχουσα παράμετρο «στοιχείο») και το άλλο ον το επόμενο στοιχείο για να ψάξετε - το ισοδύναμο του τρέχοντος τοπική μεταβλητή «γ». Θα ήθελα να κάνω την refactoring «Απόσπασμα Μέθοδος» για τα πάντα στο σώμα της τρέχουσας μεθόδου «αναζήτηση», εκτός από την πρώτη γραμμή, και στη συνέχεια, αλλάξτε τις δύο αναδρομικές κλήσεις για να χρησιμοποιήσετε τη νέα μέθοδο.
(Μερικά από αυτό είναι κερδοσκοπικές, που βασίζεται πάνω μου μαντέψουν τι θέλετε ή σκοπεύετε, λόγω της περιορισμένης πληροφόρησης. Γι 'αυτό και θα μπορούσε, φυσικά, να είναι εντελώς λάθος.)