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))