A few examples
fun[x_] := x^2
sphere = Graphics3D[{Sphere[{0, 0, 0}, 0.01]}, Boxed -> False, ImageSize -> 30];
str =
{"1", "Pi", "{f}", "f", "f[x]", "f+f", "Inactivate[f+f,Plus]",
"Hold[1+2+3]", "{1,{2,{3}}}", "fun[2]", "fun[x]", "Cos[Exp[x]]",
"Red", "sphere", "DateObject[{2014,10}]"};
table =
With[{exp = ToExpression /@ str},
Prepend[
Transpose[{
str,
exp,
Head /@ exp,
LeafCount /@ exp,
Map[TreeForm[#,
AspectRatio -> 1,
ImageSize -> 40,
PlotStyle -> PointSize[Medium],
VertexRenderingFunction -> Function[{p}, Point[p]]] &,
exp]}],
Style[#, Bold, 16] & /@ {"Input", "Output", "Head", "Leaves", "Graph"}]];
Framed[
Grid[table,
Alignment -> Left,
Dividers -> All,
Spacings -> {{2, 2, 2, 2, 2}, 2},
BaseStyle -> {FontFamily -> "Helvetica"},
Background -> {None, {{Hue[.6, .15, .9], GrayLevel[.9]}}},
FrameStyle -> Directive[Thick, White]],
FrameMargins -> 0.5,
FrameStyle -> GrayLevel[.7]]

Grid[
Partition[
Map[TreeForm[#,
AspectRatio -> 1,
ImageSize -> 200,
EdgeRenderingFunction -> ({Black, Arrow[#, 0.2]} &)] &,
{1, {f}, f + f,
fun[x], Red, DateObject[{2014, 10}],
Hold[1 + 2 + 3], {1, {2, {3}}}, sphere}],
3],
Background -> GrayLevel@0.95,
Dividers -> All]

See the documentation for Head
and read the tutorials linked therein:
Just for fun
a[b] + c[d] /. head_[_] :> head
a + c
a[b] + c[d] /. head_[_, _] :> head
Plus
Head
, although it cannot distinguish functions, because they are usual symbols in Mathematica. TryHead[{a,b,c}]
orHead[1]
orHead[1.0]
$\endgroup$Blank
with aHead
specified, like_Integer
,_String
,_a
$\endgroup$Head
- of which the OP apparently wasn't aware of. To close or not to close ... $\endgroup$