Alguém tem algum exemplo de árvore binária com função inserir, buscar e remover?
Estou fazendo um trabalho da faculdade, consegui implementar o inserir e buscar, mas estou meio perdido para o remover.
Segue o algoritmo que eu criei:
public class Arvore {
private class No {
int valor;
No direita;
No esquerda;
}
private No raiz;
private int tamanho = 0;
public boolean insere(int valor) {
No buscado = buscaInterna(valor, raiz);
if (buscado != null) {
if (buscado.valor != valor) {
No novo = new No();
novo.valor = valor;
if (buscado.valor == valor) {
return false;
}
if (buscado.valor < valor) {
buscado.direita = novo;
}
else {
buscado.esquerda = novo;
}
tamanho++;
return true;
}
return false;
}
No novo = new No();
novo.valor = valor;
raiz = novo;
tamanho++;
return true;
}
public boolean busca(int valor) {
No temp = buscaInterna(valor, raiz);
if (temp != null)
if (temp.valor == valor)
return true;
return false;
}
public No buscaInterna(int valor, No atual) {
if (atual != null) {
if (valor == atual.valor)
return atual;
}
else
return null;
if (valor > atual.valor) {
if (atual.direita != null) {
return buscaInterna(valor, atual.direita);
}
else {
return atual;
}
}
if (valor < atual.valor) {
if (atual.esquerda != null) {
return buscaInterna(valor, atual.esquerda);
} else {
return atual;
}
}
return null;
}
public int getTamanho() {
return this.tamanho;
}
}
Agradeço a todos que colaborarem.