При помощи рекурсии. Считаем детей главного листа. Потом рекурсивно считаем детей его детей и т.д.
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. Данный пердикат подщитывает среднее значения листьев. Я думаю будет не сложно взять с него только количество. =)
При помощи рекурсии. Считаем детей главного листа. Потом рекурсивно считаем детей его детей и т.д.