Não estou conseguindo fazer a main. Alguem pode me ajudar? Preciso construir a classe para criar o objeto e chamar os métodos de acordo com a opção desejada. Segue o meu codigo:
public class TrabABB {
private No raiz;
public TrabABB()
{
raiz = null;
}
public No getRaiz()
{
return raiz;
}
public boolean estaVazia()
{
return (raiz == null);
}
public No busca(No atual, int chave)
{
if (atual == null)
return null;
if (chave == atual.chave)
return atual;
if (chave < atual.chave)
return (busca(atual.filhoDir, chave));
return (busca(atual.filhoEsq, chave));
}
public void insere(int chave)
{
No novoNo = new No();
novoNo.chave = chave;
if(raiz == null)
raiz = novoNo;
else{
No atual = raiz;
No noPai;
while(true)
{
noPai = atual;
if (chave < atual.chave)
{
atual = atual.filhoEsq;
if (atual == null)
{
noPai.filhoEsq = novoNo;
return;
}
}
else
{
atual = atual.filhoDir;
if(atual == null)
{
noPai.filhoDir = novoNo;
return;
}
}
}
}
}
public boolean remove(int chave)
{
No atual = raiz;
No noPai = raiz;
boolean ehFilhoDir = true;
while(atual.chave != chave)
{
noPai = atual;
if(chave < atual.chave)
{
ehFilhoDir = true;
atual = atual.filhoDir;
}
else
{
ehFilhoDir = false;
atual = atual.filhoEsq;
}
if(atual == null)
return false;
}
if(atual.filhoDir == null && atual.filhoEsq == null)
{
if(atual == raiz)
raiz = null;
else if(ehFilhoDir)
noPai.filhoDir = null;
else
noPai.filhoEsq = null;
}
else if(atual.filhoEsq == null)
if(atual == raiz)
raiz = atual.filhoDir;
else if(ehFilhoDir)
noPai.filhoDir = atual.filhoDir;
else
noPai.filhoEsq = atual.filhoDir;
else if(atual.filhoDir == null)
if(atual == raiz)
raiz = atual.filhoEsq;
else if(ehFilhoDir)
noPai.filhoDir = atual.filhoEsq;
else
noPai.filhoEsq = atual.filhoEsq;
else
{
No predecessor = getpredecessor(atual);
if(atual == raiz)
raiz = predecessor;
else if(ehFilhoDir)
noPai.filhoDir = predecessor;
else
noPai.filhoEsq = predecessor;
predecessor.filhoDir = atual.filhoDir;
}
return true;
}
private No getpredecessor(No delNo)
{
No predecessorNoPai = delNo;
No predecessor = delNo;
No atual = delNo.filhoEsq;
while(atual != null)
{
predecessorNoPai = predecessor;
predecessor = atual;
atual = atual.filhoDir;
}
if(predecessor != delNo.filhoEsq)
{
predecessorNoPai.filhoDir = predecessor.filhoEsq;
predecessor.filhoEsq = delNo.filhoEsq;
}
return predecessor;
}
public void percurso(int tipopercurso)
{
switch(tipopercurso)
{
case 1: System.out.print("\nPercurso Preorder: “);
preOrder(raiz);
break;
case 2: System.out.print(”\nPercurso Inorder: “);
inOrder(raiz);
break;
case 3: System.out.print(”\nPercurso Postorder: ");
postOrder(raiz);
break;
}
System.out.println();
}
private void preOrder(No raizLocal)
{
if (raizLocal !=null)
{ System.out.println(raizLocal.chave + " ");
preOrder(raizLocal.filhoEsq);
preOrder(raizLocal.filhoDir);
}
}
private void inOrder(No raizLocal)
{
if (raizLocal != null)
{ inOrder(raizLocal.filhoEsq);
System.out.println(raizLocal.chave + " ");
inOrder(raizLocal.filhoDir);
}
}
private void postOrder(No raizLocal)//construir mtodo recursivo
{
if (raizLocal != null)
{ postOrder(raizLocal.filhoEsq);
postOrder(raizLocal.filhoDir);
System.out.println(raizLocal.chave + " ");
}
}
public int alturaABB (No raizlocal)
{
if(raizlocal == null)
return 0;
else{
int he = alturaABB(raizlocal.filhoEsq);
int hd = alturaABB(raizlocal.filhoDir);
if (he<hd)
return(hd+1);
else
return(he+1);
}
}
public int contaNos(No raizLocal)
{
if (raizLocal == null)
return 0;
else
return(1 + contaNos(raizLocal.filhoEsq) + contaNos(raizLocal.filhoDir));
}
public int contaFolhas(No raizLocal)
{
if (raizLocal == null)
return 0;
else{
if (raizLocal.filhoEsq == null && raizLocal.filhoDir == null)
return 1;
else
return (contaFolhas(raizLocal.filhoEsq) + contaFolhas(raizLocal.filhoDir));
}
}
public int contaPais(No raizLocal)
{
if (raizLocal == null)
return 0;
else{
if (raizLocal.filhoEsq == null && raizLocal.filhoDir == null)
return 0;
}
return (1 + contaPais(raizLocal.filhoEsq) + contaPais(raizLocal.filhoDir));
}
public No menorABB(No raizLocal)
{
if (raizLocal == null)
return null;
else
if(raizLocal.filhoEsq == null)
return (raizLocal);
else
return menorABB(raizLocal.filhoEsq);
}
public No maiorABB(No raizLocal)
{
if (raizLocal == null)
return null;
else
if (raizLocal.filhoDir == null)
return (raizLocal);
else
return maiorABB(raizLocal.filhoDir);
}