Fiz aqui agora, não ficou muito bonito não, isso pode ser melhorado muito…
public class No {
private int elemento;
private No dir, esq;
public No(int elemento){
this.elemento = elemento;
dir = null;
esq = null;
}
public int getElemento(){
return elemento;
}
public No getDir(){
return dir;
}
public void setDir(No dir){
this.dir = dir;
}
public No getEsq(){
return esq;
}
public void setEsq(No esq){
this.esq = esq;
}
}
public class Arvore {
No raiz;
No atual;
public Arvore() {
raiz = null;
}
public No getRaiz(){
return raiz;
}
public void insereNO(No no) {
if (raiz == null) {
raiz = no;
} else {
atual = raiz;
while (atual != null) {
if (no.getElemento() < atual.getElemento()) {
if (atual.getEsq() == null) {
atual.setEsq(no);
break;
}
else
atual = atual.getEsq();
} else if (no.getElemento() > atual.getElemento()) {
if (atual.getDir() == null) {
atual.setDir(no);
break;
}else
atual = atual.getDir();
}else{
System.out.println("Elemento já existe na árvore!!!");
return;
}
}
}
}
public void imprimeArvore(No no) {
if (no == null)
return;
System.out.println(no.getElemento() + " ");
imprimeArvore(no.getEsq());
imprimeArvore(no.getDir());
}
}
public class Main {
public static void main(String[] args) {
Arvore arvore;
No no;
arvore = new Arvore();
no = new No(10);
arvore.insereNO(no);
no = new No(5);
arvore.insereNO(no);
no = new No(15);
arvore.insereNO(no);
no = new No(12);
arvore.insereNO(no);
arvore.imprimeArvore(arvore.getRaiz());
}
}
nos testes que eu fiz funcionou…
agora fica o desafio pra vc… implementar a remoção…
lembre-se que a remoção do nó raiz terá um tratamento diferenciado…
att,
Paulo Henrique