Здесь:
sum=size(root.left);
sum=size(root.right);
Вы вычисляете две суммы, чтобы затем выбросить первую!
Вместо этого вы можете: return size(root.left)+size(root.right) + 1
.
Здесь также нет смысла использовать статическое поле sum
.Если вообще, это должна быть локальная переменная в этом рекурсивном методе!Соответственно: просто return 0
для нуля, в противном случае используйте возврат, который я предоставил здесь. нет необходимости для этой sum
переменной в первую очередь!