Let f(0)=λ. Put x=y=0 in (1) to get f(λ)=0. Taking y=λ, we get f(x3)=x2f(x)+λ. Put x=λ,y=0 in (1) and we get
f(λ3+λ)=λ2f(λ).(2)
But x=λ,y=λ gives f(λ3)=λ. Now put x=λ,y=λ3 and we get
f(λ3+λ)=λ2f(λ)+λ3.(3)
Comparing (2) and (3), we get λ=0. Therefore
f(x3)=x2f(x),f(f(x))=x,
for all x. Now changing y to f(y), we get
f(x3+y)=x2f(x)+f(y)=f(x3)+f(y)
for all x,y. Since x→x3 is a bijection of R onto R, we obtain
f(x+y)=f(x)+f(y),f(f(x))=x
for all x,y.
Consider f(x3)=x2f(x). Replacing x by x+1, we obtain
f(x3+3x2+3x+1)=(x2+2x+1)f(x+1).
Using the additivity of f, we get
f(x3)+3f(x2)+3f(x)+f(1)=(x2+2x+1)(f(x)+f(1))=x2f(x)+2xf(x)+f(x)+x2f(1)+2xf(1)+f(1).
This reduces to
3f(x2)+2f(x)=cx2+2cx+2xf(x)(4)
for all x∈R. Replace x by (x+1) and expand using additivity, we get
3f(x2)+6f(x)=cx2+6cx+2xf(x)(5).
Comparing (4) and (5), we see that f(x)=cx. Replacing x by f(x), we get x=cf(x). Together we get c2x=x. Hence c2=±1. Therefore f(x)=±x.