Arvore binaria 537 palavras 3 páginas Exibir mais 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 direita noEsq = 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 public void remove (No n) { if (raiz == null) throw new RuntimeException ("Lista vazia."); else { int numFilhos = n.numeroFilhos(); if (numFilhos == 0) { // folha if (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; else filho = n.direita; if (n == raiz) raiz = filho; else { if (n.pai.dado > n.dado) n.pai.esquerda = filho; else