type 'a narytree =
| Nnode of 'a * 'a narytree list
| Nleaf;;
type 'a binarytree =
| Bnode of 'a * 'a binarytree * 'a binarytree
| Bleaf;;
let n2b n =
let rec n2b' = function
| Nleaf -> Bleaf
| Nnode(e, l) ->
let rec listToB = function
| [] -> Bleaf
| Nleaf::xs -> listToB xs
| Nnode(v, l)::xs -> Bnode( v, (listToB l), (listToB xs))
in Bnode(e, Bleaf, (listToB l))
in n2b' n;;
let v1 =
Nnode(10, [
Nnode(11, [
Nnode(21, [Nleaf]);
Nnode(22, [Nleaf]);
Nnode(23, [Nleaf])
]);
Nnode(12, [Nleaf]);
Nnode(13, [
Nnode(31, [Nleaf]);
Nnode(32, [Nleaf]);
Nnode(33, [Nleaf])
])
]);;
tiens,en O'caml style curryfié, j'ai choisi mes règles vu que tu te décides pas