Comparator usando generics

Olá! se alguém puer me ajudar eu agradeceria, fiz uma busca mas nao achei usando os dois, generics e comparator.

Eu tenho q fazer uma arvore AVL, a esrutura está assim

class BSTree<T>{} //MAIN
class BSNode<T>{}
class AVLTree<T> extends BSTree{}
class AVLNode<T> extends BSNode{}

1 - O contrutor de um generics eu faço assim?

public BSTree<T>(){}

ou assim

public BSTree(){}

2 - Estou com uma duvida de como eu vou fazr o comparator
Como eu devo implementa-lo para que eu possa usar o método compare com generics?
Pq usando generics eu posso colocar um tipo int, double, float, char, sring, … então eu to confuso de como fazer isso

se alguem tiver como me mostrar como implemetar isso :roll:
:wink: obrigado

Dê uma olhadinha no fonte de TreeSet - em src.zip, o arquivo é java/util/TreeSet.java. Acho mais fácil ver lá como é que se deve fazer.

class TreeNode<T implements Comparable <T> > {
     private T value;
     public TreeNode(T pValue) {
          value = pValue;
     }
}

/** Só começando, para você ver que não é exatamente 
um bicho de 7 cabeças. Mas não precisa aproveitar nada (por exemplo, 
essa idéia de inicializar com o nó raiz é para jogar fora mesmo!)
é só para você ver como é que é. */
public class Tree<T implements Comparable <T> > {
     private TreeNode<T> root;
     public Tree<T> (T rootNode) {
          root = new TreeNode(rootNode);
     }
}