AvlTree = function(opt_comparator) {
  /**
   * Comparison function used to compare values in the tree. This function
   * should take two values, a and b, and return x where:
   *
   * <pre>
   *  x < 0 if a < b,
   *  x > 0 if a > b,
   *  x = 0 otherwise
   * </pre>
   *
   * @private @const {!Function}
   */
  this.comparator_ = opt_comparator || DEFAULT_COMPARATOR;

  /**
   * Pointer to the root node of the tree.
   *
   * @private {?Node<T>}
   */
  this.root_ = null;

  /**
   * Pointer to the node with the smallest value in the tree.
   *
   * @private {?Node<T>}
   */
  this.minNode_ = null;

  /**
   * Pointer to the node with the largest value in the tree.
   *
   * @private {?Node<T>}
   */
  this.maxNode_ = null;
}
Constructs an AVL-Tree, which uses the specified comparator to order its
values. The values can be accessed efficiently in their sorted order since
the tree enforces a O(logn) maximum height.

@param {?Function=} opt_comparator Function used to order the tree's nodes.
@constructor
@implements {Collection<T>}
@final
@template T