public void supprimer(E clef) throws Exercice1Exception {
        NoeudArbre<E> noeud = this.rechercheClef(clef, SEARCH_TREE);
        if (noeud == NIL) {
            throw new Exercice1Exception("clef " + clef + " inexistante");
        }
        while (!(noeud.filsDroit == NIL && noeud.filsGauche == NIL)) {
            descendreNoeudUnCran(noeud);
        }

        if (noeud.pere.filsDroit == noeud) {
            noeud.pere.filsDroit = NIL;
        } else if (noeud.pere.filsGauche == noeud) {
            noeud.pere.filsGauche = NIL;
        } else if (noeud.pere == NIL){
            root = NIL;
        }
        else{
            throw new Exercice1Exception("Etat de l'arbre corrompu, le noeud " + noeud + " n'est ni le fils droit ni le fils gauche de son père");
        }

    }