Great question! TikZ is not set up to do this kind of tree. It assumes that the position of each child node is a function of the number of the child node and the total number of child nodes. To define the tree you have with a single child node for each leaf won't work because the rayfinned fish leaf needs to get further from the root when you add the mammals leaf.
But you can trick it by creating invisible nodes at regular points. Your tree would need to be 10 levels deep, I think.
Or, you can hack by using a custom growth function (See section 42 of the PGF 2.00 manual or section 53 of the 2.10 manual):
\begin{tikzpicture}[%
grow via three points={%
one child at (-0.5,1) and two children at (-0.5,1) and (0.5,1)},
genus/.style={
rectangle,inner sep=0pt,outer sep=1pt, minimum width=5pt,minimum height=5pt,fill,
label={[black,anchor=west,rotate around={90:(-2.5pt,0)}
]0:#1}},
]
\node[coordinate] {} [%
grow via three points={one child at (0,0) and two children at (-4.5,9) and (0.5,1)},
very thick,yellow
]
child {node[genus=rayfinned fish] {}}
child {
[grow via three points={one child at (0,0) and two children at (-4,8) and (0.5,1)}]
child {node[genus=lungfish] {}}
child {
[grow via three points={one child at (0,0) and two children at (-3,6) and (1,2)}]
child {
[grow via three points={one child at (0,0) and two children at (-0.5,1) and (0.5,1)}]
child {node[genus=salamanders] {}}
child {node[genus=frogs] {}}
}
child[blue] {
[grow via three points={one child at (0,0) and two children at (-2.5,5) and (0.5,1)}]
child {node[genus=turtles] {}}
child {
[grow via three points={one child at (0,0) and two children at (-0.5,1) and (2,4)}]
child {
[grow via three points={one child at (0,0) and two children at (-1,2) and (1,2)}]
child {
[grow via three points={one child at (0,0) and two children at (-0.5,1) and (0.5,1)}]
child {node[genus=lizards] {}}
child {node[genus=snakes] {}}
}
child {
[grow via three points={one child at (0,0) and two children at (-0.5,1) and (0.5,1)}]
child {node[genus=crocodiles] {}}
child {node[genus=birds] {}}
}
}
child {node[genus=mammals] {}}
}
}
}
}
;
\end{tikzpicture}
That should probably be cleaned up--I think you can create a named coordinate in each direction and scale.