Geometric decay
Each generation is a fixed fraction of the last, which is why a real tree narrows towards the crown and not towards its middle.
A branch is a line. At the end of a line, two more lines begin, each shorter than the last, each turned away from its parent by a fixed angle. There is no model here and no dataset — only a recursion that terminates when the length falls below a pixel.
What makes the result feel like a tree rather than a diagram is the small irregularities: a seeded pseudo-random wobble on every angle, a slight lean that accumulates down the trunk, and a taper that is faster in one direction than the other.
Each generation is a fixed fraction of the last, which is why a real tree narrows towards the crown and not towards its middle.
The angle between parent and child is small enough to keep the silhouette coherent and large enough to avoid a lattice.
Leaves appear on the last two generations only. Drawing them everywhere turns a tree into a cloud.