class_docstr: Iterative process to estimate target quantile of a univariate distribution.
  
  Unlike the base class, this uses a `TreeResidualSumQuery` to estimate the
  fraction below estimate with an exact denominator. This assumes that below
  estimate value is used in a SGD-like update and we want to privatize the
  cumsum of the below estimate.
  
  See "Practical and Private (Deep) Learning without Sampling or Shuffling"
  (https://arxiv.org/abs/2103.00039) for tree aggregation and privacy
  accounting, and "Differentially Private Learning with Adaptive Clipping"
  (https://arxiv.org/abs/1905.03871) for how below estimate is used in a
  SGD-like algorithm.
code: def _construct_below_estimate_query(
      self, below_estimate_stddev, expected_num_records
  ):
      # See comments in `QuantileEstimatorQuery._construct_below_estimate_query`
      # for why clip norm 0.5 is used for the query.
      sum_query = tree_aggregation_query.TreeResidualSumQuery.build_l2_gaussian_query(
          clip_norm=0.5,
          noise_multiplier=2 * below_estimate_stddev,
          record_specs=tf.TensorSpec([]),
      )
      return normalized_query.NormalizedQuery(
          sum_query, denominator=expected_num_records
      )
  
imports: import collections
  import tensorflow
  from tensorflow_privacy.privacy.dp_query import dp_query
  from tensorflow_privacy.privacy.dp_query import gaussian_query
  from tensorflow_privacy.privacy.dp_query import no_privacy_query
  from tensorflow_privacy.privacy.dp_query import normalized_query
  from tensorflow_privacy.privacy.dp_query import tree_aggregation_query
label_desc: Use image node_id 1 for calling the TreeQuantileEstimatorQuery obj's underlying member method code with example usage: obj._construct_below_estimate_query(below_estimate_stddev, expected_num_records) and returns: normalized_query