Arvore binaria

Disponível somente no TrabalhosFeitos
  • Páginas : 3 (537 palavras )
  • Download(s) : 0
  • Publicado : 10 de outubro de 2012
Ler documento completo
Amostra do texto
public class ArvoreBinaria {
// atributo
private No raiz;
// construtor
public ArvoreBinaria () {
raiz = null;
}
// insere
public void insere (int dado) {No novo = new No();
novo.dado = dado;
novo.esquerda = novo.direita = null;
if(raiz == null) {
novo.pai = null;
raiz = novo;}
else {
No aux = raiz;
No pai = null;
boolean noEsq = false;
while (aux != null) {
if (aux.dado== dado) return; //o "dado" já existe
else if (aux.dado < dado) {
pai = aux;
aux = aux.direita; //passo a procurar aa direitanoEsq = false;
}
else {
pai = aux;
aux = aux.esquerda; //passo a procurar aa esquerda
noEsq =true;
}
}
if (noEsq) pai.esquerda = novo;
else pai.direita = novo;
novo.pai = pai;
}
}
// remove
publicvoid remove (No n) {
if (raiz == null) throw new RuntimeException ("Lista vazia.");
else {
int numFilhos = n.numeroFilhos();
if (numFilhos == 0) { // folhaif (n == raiz) raiz = null;
else {
if (n.pai.dado > n.dado) n.pai.esquerda = null;
else n.pai.direita =null;
}
}
else if (numFilhos == 1) { // tem 1 filho
No filho;
if (n.esquerda != null) filho = n.esquerda;
elsefilho = n.direita;
if (n == raiz) raiz = filho;
else {
if (n.pai.dado > n.dado) n.pai.esquerda = filho;
else...
tracking img