public void add(T data) {
    if (this.isEmpty())
      this.setData(data);
    else if (this.getData().compareTo(data) > 0) {
      if (this.getLeft() == null)
        this.setLeft(insertEmpty(data));
      else
        this.getLeft().add(data);
    } else if (this.getData().compareTo(data) < 0) {
      if (this.getRight() == null)
        this.setRight(insertEmpty(data));
      else
        this.getRight().add(data);
    }
    this.balancing();
  }