Arvore Costurada - JAVA
/* * AUTOR: * * ROBERTO QUEIROZ * */
public class Arvore {
No raiz;
/** * METODO CONSTRUTOR DA CLASSE */ // public Arvore() { // // raiz = new No(); // raiz.setDireita(raiz); // raiz.setEsquerda(raiz); // raiz.setCosturaesq(true); // raiz.setChave(Integer.MAX_VALUE); // // } /* * METODO INSERIR */ public void inserir(int valor) {
if(raiz == null) {
//CRIANDO A RAIZ (INSERINDO O PRIM ELEMENTO) raiz = new No(); raiz.setDireita(raiz); // PONTEIRO DIREITO raiz.setEsquerda(raiz); // PONTEIRO ESQUERDO raiz.setCosturaesq(true); //um elemento sozinho sempre tem costura - COSTURA ESQ = TRUE raiz.setCosturadir(true); // COSTURA DIREITA = TRUE raiz.setChave(valor); //GRAVANDO O VALOR NA RAIZ System.out.println("Inserido [" + valor + "] na Raiz!"); } else { No p = raiz; // (P É UM TEMPORARIO)
for (;;) {
if (p.getChave() < valor) { //COMPARAÇÃO DO VALOR A SER INSERIDO COM O VALOR RAIZ
if (p.ehCosturadir()) { // SE É TRUE, ESSA RAIZ TEM COSTURA PELA DIR, OU SEJA , HÁ // VAGA PARA INSERÇÃO E SERA INSERIDO LA. break; //SAIU DO FOR } /* p vai receber o proximo da direita*/ p = p.getDireita(); //TORNA O FILHO DIREITO UMA "RAIZ"
} else if (p.getChave() > valor) { /* Se o valor verdadeiro continua... se for falso sai do for */ if (p.ehCosturaesq()) {