Un élément de type E doivent pouvoir être comparé à un autre élément de type E. On pourrait donc penser à écrire

public class ArbreBinaireRecherche<E extends Comparable<E>> {

Votre code fonctionnerait si vous ajoutez, par exemple, des Integer dans votre arbre binaire.

Cependant dans l'exercice suivant vous verrez (vous pouvez tester en mettant cette définition à la place de la bonne définition) que votre classe ne pourra convenir pour ranger des Employe, classe fille de Personne qui implémente l'interface Comparable<Personne> et pas Comparable<Employe> (Comparable<Personne> n'est pas un sous-type de Comparable<Employe> et donc vous ne pourrez ranger des employés dans l'arbre binaire).

Pour tenir compte de ce problème il faut donc changer la définition et remplacer E dans Comparable<E> par quelque chose qui signifie "un sur-type quelconque de E" (utilisez une instanciation avec "joker"). Vous pouvez vous inspirer, par exemple, de la définition de la méthode sort de List qui prend un comparateur en paramètre.

Si vous ne voyez pas, utilisez le code ci-dessus (ArbreBinaireRecherche<E extends Comparable<E>>) et faites vous aider lorsque vous aurez un problème dans l'exercice suivant avec la classe Employe.