AtomQ[expr] yields True if expr is an expression which cannot be divided into subexpressions, and yields False otherwise.
You can use AtomQ in a recursive procedure to tell when you have reached the bottom of the tree corresponding to an expression.
AtomQ gives True for symbols, numbers, strings and other raw objects.
AtomQ gives True on any object whose subparts cannot be accessed using functions like Map.
See The Mathematica Book: Section 2.3.5.
See also: NumberQ, Head, LeafCount, Length.