It's strange. If Graph is an atom than why we can browse Graph in FullForm?
In[57]:= FullForm@Graph[{1->2,3->2}]
Out[57]= Graph[List[1,2,3],List[DirectedEdge[1,2],DirectedEdge[3,2]]]
On the other hand, we can't change Head for Graph symbol also. So, is it Graph treated in a special way in Wolfram Language? If it's true then It may explain why TreeForm behaves in such a way.
In[58]:= FullForm[ Apply[f,Graph[{1->2,3->2}]] ]
Out[58]= Graph[List[1,2,3],List[DirectedEdge[1,2],DirectedEdge[3,2]]]
In[59]:= FullForm[ Apply[f,Graphics[{Circle[{0,0}],Disk[{2,2}]}]] ]
Out[59]= f[List[Circle[List[0,0]],Disk[List[2,2]]]]