private void descendreNoeudUnCran(NoeudArbre<E> noeud) throws Exercice1Exception {
        // père du noeud
        NoeudArbre<E> p = noeud.pere;
        // fils droit du noeud
        NoeudArbre<E> d = noeud.filsDroit;
        // fils gauche du noeud
        NoeudArbre<E> g = noeud.filsGauche;
        // noeud temporaire
        NoeudArbre<E> temp;

        if (g.priorite > d.priorite) {
            if (noeud == root) {
                root = g;
            }

            g.pere = p;
            temp = g.filsDroit;
            g.filsDroit = noeud;

            if (noeud == p.filsDroit) {
                p.filsDroit = g;
            } else {
                p.filsGauche = g;
            }

            noeud.filsGauche = temp;
            noeud.pere = g;

        } else if (g.priorite < d.priorite) {
            if (noeud == root) {
                root = d;
            }
            d.pere = p;
            temp = d.filsGauche;
            d.filsGauche = noeud;

            if (noeud == p.filsDroit) {
                p.filsDroit = d;
            } else {
                p.filsGauche = d;
            }

            noeud.filsDroit = temp;
            noeud.pere = d;
        } else {
            throw new Exercice1Exception("Arbre erronée, priorité dupliquée");
        }

    }