datatype ttree = nul | node of int * ttree * ttree *ttree; fun insert(X,nul) = node(X,nul,nul,nul) |insert(X,node(Y,L,M,R)) = if X < Y then node(Y,insert(X,L),M,R) else if X > Y then node(Y,L,M,insert(X,R)) else node(Y,L,insert(X,M),R); fun insertL(nil,T) = T |insertL(a::x,T)=insertL(x,insert(a,T)); fun treelist(nul) = nil |treelist(node(x,L,M,R)) = treelist(L) @ x :: treelist(M) @ treelist(R); val indent = 2; fun tab(Sign, N) = if N> 0 then (print(Sign:string);tab(Sign,N-1)) else nil; fun printt(nul,N) = it |printt(node(y,L,M,R),N) = (printt(L,N+indent);tab("-",N);print(y);print("\n");printt(M,N+indent);printt(R,N+indent)); fun printtree T = printt(T,0); val t1 = node(6,node(1,nul,nul,nul),nul,node(8,nul,nul,nul)); val t2= node(6,node(3,node(1,nul,nul,nul),node(3,nul,node(3,nul,nul,nul),node(4,nul,nul,nul)),nul) ,node(6,nul,nul,nul) ,node(8,node(7,nul,nul,nul),nul,nul)); printtree(t2);