sum_avg2:(treetype,integer,integer)determ(i,o,o).
sum_avg2(tree(_,nil,nil),0,0):-!.
sum_avg2(tree(_,nil,R),Sum,A):-!, sum_avg2(R,Sum,A1), A=A1+1.
sum_avg2(tree(_,L,nil),Sum,A):-!, sum_avg2(L,Sum,A2), A=A2+1.
sum_avg2(tree(_,L,R),Sum,A):-
sum_avg2(L,L1,A1),
sum_avg2(R,R1,A2),
A=A1+A2+1,
Sum=L1+R1+1.
Данный пердикат подщитывает среднее значения листьев. Я думаю будет не сложно взять с него только количество. =)