If you don't want to manually adjust the spacing for each tree, you could use the tikz-qtree package. This is aimed at linguistics but can be used in other cases. (The spacing commands below are setting the minimum distances, not the actual distances. The package automatically guarantees that nodes won't overlap with a pretty straightforward layout algorithm that you can probably infer from this example.)

Edit: I'm finally at the right computer to update this example to show how to deal with @Alan's question. I left the old image for comparison above (to get this, remove the \tikzset command from the above code), but here's the one with lines emerging from the center of the nodes:

One thing that bothers some people with this tree is that the branches extend from the bottom of the circles rather than the implicit centre. (As in the tree in the other answer.) I couldn't figure out a way to change that with tikz-qtree.
–
Alan MunnMay 30 '11 at 21:24

2

@Alan, you can reset to the default by doing the following: \tikzset{edge from parent/.style={draw, edge from parent path={(\tikzparentnode) -- (\tikzchildnode)}}}
–
kgrMay 30 '11 at 22:08

Thanks. I'll add this to a previous answer of mine that produced a similar tree.
–
Alan MunnMay 30 '11 at 22:24