Try using any of the existing systems available to you, while tuning parameters to reduce triangle count.
Otherwise...
A general purpose L-system will help with procedural plant generation (not only trees).
If you're asking specifically about how to merge leaves, you can generate isosurfaces around nodes and evaluate using marching cubes.
Can be made from scratch or scripted but either way a significant piece of work.
As a much cheaper alternative to iso-surfaces, you can get results quickly by modifying pre-generated primitives. I would probably generate a few icospheres (using data from the L-System) and use additional branch data to scale and deform them.
This is not only cheaper to build (saving you days of work getting your iso-surfaces right) but also will execute faster and gives you direct control over foliage topology.
Once you have your blobby shapes, randomise coordinates to give an organic look.