L'operatore ternario ha precedenza molto bassa, per cui è come se quell'espressione fosse scritta come:
codice:
return (left.empty() && right.empty()) ? 1 : (left.contaFoglie()+right.contaFoglie());
ovvero
codice:
int ret;
if(left.empty() && right.empty())
    ret = 1;
else
    ret = left.contaFoglie() + right.contaFoglie();
return ret;
Il + è semplicemente il normale operatore di somma; non ho capito cosa ci sia da "mettere in colonna".