def supprime_minimum(a): """supprime le plus petit élément de a suppose a non vide""" assert a is not None if a.gauche is None: # la racine est le minimum return a.droit return Noeud(supprime_minimum(a.gauche),a.valeur,a.droit) def supprime(x, a): """supprime une occurrence de x dans a""" if a is None: return None if x < a.valeur: return Noeud(supprime(x,a.gauche),a.valeur,a.droit) elif x > a.valeur: return Noeud(a.gauche,a.valeur,supprime(x,a.droit)) # il faut supprimer la racine elif a.droit is None: return a.gauche else: return Noeud(a.gauche, minimum(a.droit), \ supprime_minimum(a.droit))