Tenho um codigo de arvore avl e tenho que fazer com que ela aceite objetos genericos, usando aquele metodo de . tentei aqui mas não consegui
import java.util.Scanner;
public class ArvoreAVL {
private static class ARVORE {
public int num, altd, alte; //dado, altura direita, altura esquerda
public ARVORE dir, esq; // tipo arvore direita esquerda
}
public static ARVORE inserir(ARVORE aux, int num) {
// o objeto novo é um objeto auxiliar
ARVORE novo;
if (aux == null) { // se é vazio
novo = new ARVORE(); // cria uma nova arvore
novo.num = num; // coloca numero no numero da arvore
novo.altd = 0; // altura = o
novo.alte = 0; // altura = o
novo.esq = null; // sem filho na esquerda
novo.dir = null; // sem filho na direita
aux = novo; // auxiliar = arvore
} else if (num < aux.num) { // se não for vazio insere. se numero é menor que numero que esta na arvore
aux.esq = inserir(aux.esq, num); // vai inserir na esquerda
if (aux.esq.altd > aux.esq.alte) {
aux.alte = aux.esq.altd + 1;
} else {
aux.alte = aux.esq.alte + 1;
}
aux = balanceamento(aux);
} else {
aux.dir = inserir(aux.dir, num); // se numero for maior, insere na direita
if (aux.dir.altd > aux.dir.alte) {
aux.altd = aux.dir.altd + 1;
} else {
aux.altd = aux.dir.alte + 1;
}
aux = balanceamento(aux);
}
return aux;
}
public static ARVORE balanceamento(ARVORE aux) {
int d, df;
d = aux.altd - aux.alte;
if (d == 2) {
df = aux.dir.altd - aux.dir.alte;
if (df >= 0) {
aux = rotacao_esquerda(aux);
} else {
aux.dir = rotacao_direita(aux.dir);
aux = rotacao_esquerda(aux);
}
} else if (d == -2) {
df = aux.esq.altd - aux.esq.alte;
if (df <= 0) {
aux = rotacao_direita(aux);
} else {
aux.esq = rotacao_esquerda(aux.esq);
aux = rotacao_direita(aux);
}
}
return aux;
}
public static ARVORE rotacao_esquerda(ARVORE aux) {
ARVORE aux1, aux2;
aux1 = aux.dir;
aux2 = aux1.esq;
aux.dir = aux2;
aux1.esq = aux;
if (aux.dir == null) {
aux.altd = 0;
} else if (aux.dir.alte > aux.dir.altd) {
aux.altd = aux.dir.alte + 1;
} else {
aux.altd = aux.dir.altd + 1;
}
if (aux1.esq.alte > aux1.esq.altd) {
aux1.alte = aux1.esq.alte + 1;
} else {
aux1.alte = aux1.esq.altd + 1;
}
return aux1;
}
public static ARVORE rotacao_direita(ARVORE aux) {
ARVORE aux1, aux2;
aux1 = aux.esq;
aux2 = aux1.dir;
aux.esq = aux2;
aux1.dir = aux;
if (aux.esq == null) {
aux.alte = 0;
} else if (aux.esq.alte > aux.esq.altd) {
aux.alte = aux.esq.alte + 1;
} else {
aux.alte = aux.esq.altd + 1;
}
if (aux1.dir.alte > aux1.dir.altd) {
aux1.altd = aux1.dir.alte + 1;
} else {
aux1.altd = aux1.dir.altd + 1;
}
return aux1;
}
public static void exibiremordem(ARVORE aux) {
if (aux != null) {
System.out.print(aux.num + " ");
exibiremordem(aux.esq);
exibiremordem(aux.dir);
}
}
public static void exibirpreordem(ARVORE aux) {
if (aux != null) {
System.out.print(aux.num + ", ");
exibirpreordem(aux.esq);
exibirpreordem(aux.dir);
}
}
public static void exibirposordem(ARVORE aux) {
if (aux != null) {
exibirposordem(aux.esq);
exibirposordem(aux.dir);
System.out.print(aux.num + ", ");
}
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
ARVORE a = null;
int g;
do
{
System.out.print("Digite numero \n");
System.out.print("Digite 0 para parar a insercao numero \n");
g = Integer.parseInt(s.nextLine());
if (g!=0)
{
a = inserir(a, g );
}
}while (g!=0);
System.out.print("EM : ");
exibiremordem(a);
System.out.println();
System.out.print("PRE : ");
exibirpreordem(a);
System.out.println();
System.out.print("POS : ");
exibirposordem(a);
System.out.println();
}
}
onde eu eu faria esse generico? eu tentei no insere mas não foi