(** Problème ENSI '98 **) type int_arbre = Nil | Noeud of int*int_arbre*int_arbre;; (* Union d'ABR *) let rec couper c = function |Nil -> (Nil, Nil) |Noeud(i,a,b) -> if c=i then (Noeud(i,a,Nil),b) else if c failwith "Arbre vide" |Noeud(a,Nil,_) -> a |Noeud(_,g,_) -> min g ;; let union a b = let racine = min b in let (g,d)=couper racine b in Noeud (racine,a,d);;