datatype tree = nul|
                            node of int * tree * tree;
val t1 = node(6,node(1,nul,nul),node(8,nul,nul));
val t2= node(6,node(3,node(1,nul,nul),node(4,nul,nul))
                    ,node(8,node(7,nul,nul),nul));
val t3= node(4,node(0,nul,node(3,node(2,node(1,nul,nul),nul),nul))
                    ,node(10,node(6,nul,nul),node(12,nul,nul)));

fun somme(nul)=0|
somme(node(a,L,R))=a+somme(L)+somme(R);

fun hauteur(nul)=0|
hauteur(node(a,L,R))=1+max(hauteur(L),hauteur(R));

fun equil(nul)=true|
equil(node(a,L,R))=
if abs(hauteur(L)-hauteur(R))<=1 then (equil(L) andalso equil(R))
else false;