organizando identação!!
This commit is contained in:
parent
f39a412024
commit
6a013de291
|
|
@ -1,256 +1,247 @@
|
||||||
/**
|
/**
|
||||||
* Arvore binaria de pesquisa
|
* Arvore binaria de pesquisa
|
||||||
|
*
|
||||||
* @author Max do Val Machado
|
* @author Max do Val Machado
|
||||||
*/
|
*/
|
||||||
public class Alvinegra {
|
public class Alvinegra {
|
||||||
private NoAN raiz; // Raiz da arvore.
|
private NoAN raiz; // Raiz da arvore.
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construtor da classe.
|
* Construtor da classe.
|
||||||
*/
|
*/
|
||||||
public Alvinegra() {
|
public Alvinegra() {
|
||||||
raiz = null;
|
raiz = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo publico iterativo para pesquisar elemento.
|
* Metodo publico iterativo para pesquisar elemento.
|
||||||
* @param elemento Elemento que sera procurado.
|
*
|
||||||
* @return <code>true</code> se o elemento existir,
|
* @param elemento Elemento que sera procurado.
|
||||||
* <code>false</code> em caso contrario.
|
* @return <code>true</code> se o elemento existir,
|
||||||
*/
|
* <code>false</code> em caso contrario.
|
||||||
public boolean pesquisar(int elemento) {
|
*/
|
||||||
return pesquisar(elemento, raiz);
|
public boolean pesquisar(int elemento) {
|
||||||
}
|
return pesquisar(elemento, raiz);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo privado recursivo para pesquisar elemento.
|
* Metodo privado recursivo para pesquisar elemento.
|
||||||
* @param elemento Elemento que sera procurado.
|
*
|
||||||
* @param i NoAN em analise.
|
* @param elemento Elemento que sera procurado.
|
||||||
* @return <code>true</code> se o elemento existir,
|
* @param i NoAN em analise.
|
||||||
* <code>false</code> em caso contrario.
|
* @return <code>true</code> se o elemento existir,
|
||||||
*/
|
* <code>false</code> em caso contrario.
|
||||||
private boolean pesquisar(int elemento, NoAN i) {
|
*/
|
||||||
|
private boolean pesquisar(int elemento, NoAN i) {
|
||||||
boolean resp;
|
boolean resp;
|
||||||
if (i == null) {
|
if (i == null) {
|
||||||
resp = false;
|
resp = false;
|
||||||
|
|
||||||
} else if (elemento == i.elemento) {
|
} else if (elemento == i.elemento) {
|
||||||
resp = true;
|
resp = true;
|
||||||
|
|
||||||
} else if (elemento < i.elemento) {
|
} else if (elemento < i.elemento) {
|
||||||
resp = pesquisar(elemento, i.esq);
|
resp = pesquisar(elemento, i.esq);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
resp = pesquisar(elemento, i.dir);
|
resp = pesquisar(elemento, i.dir);
|
||||||
}
|
}
|
||||||
return resp;
|
return resp;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo publico iterativo para exibir elementos.
|
* Metodo publico iterativo para exibir elementos.
|
||||||
*/
|
*/
|
||||||
public void caminharCentral() {
|
public void caminharCentral() {
|
||||||
System.out.print("[ ");
|
System.out.print("[ ");
|
||||||
caminharCentral(raiz);
|
caminharCentral(raiz);
|
||||||
System.out.println("]");
|
System.out.println("]");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo privado recursivo para exibir elementos.
|
* Metodo privado recursivo para exibir elementos.
|
||||||
* @param i NoAN em analise.
|
*
|
||||||
*/
|
* @param i NoAN em analise.
|
||||||
private void caminharCentral(NoAN i) {
|
*/
|
||||||
if (i != null) {
|
private void caminharCentral(NoAN i) {
|
||||||
caminharCentral(i.esq); // Elementos da esquerda.
|
if (i != null) {
|
||||||
System.out.print(i.elemento + ((i.cor) ? "(p) " : "(b) ")); // Conteudo do no.
|
caminharCentral(i.esq); // Elementos da esquerda.
|
||||||
caminharCentral(i.dir); // Elementos da direita.
|
System.out.print(i.elemento + ((i.cor) ? "(p) " : "(b) ")); // Conteudo do no.
|
||||||
}
|
caminharCentral(i.dir); // Elementos da direita.
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo publico iterativo para exibir elementos.
|
* Metodo publico iterativo para exibir elementos.
|
||||||
*/
|
*/
|
||||||
public void caminharPre() {
|
public void caminharPre() {
|
||||||
System.out.print("[ ");
|
System.out.print("[ ");
|
||||||
caminharPre(raiz);
|
caminharPre(raiz);
|
||||||
System.out.println("]");
|
System.out.println("]");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo privado recursivo para exibir elementos.
|
* Metodo privado recursivo para exibir elementos.
|
||||||
* @param i NoAN em analise.
|
*
|
||||||
*/
|
* @param i NoAN em analise.
|
||||||
private void caminharPre(NoAN i) {
|
*/
|
||||||
if (i != null) {
|
private void caminharPre(NoAN i) {
|
||||||
System.out.print(i.elemento + ((i.cor) ? "(p) " : "(b) ")); // Conteudo do no.
|
if (i != null) {
|
||||||
caminharPre(i.esq); // Elementos da esquerda.
|
System.out.print(i.elemento + ((i.cor) ? "(p) " : "(b) ")); // Conteudo do no.
|
||||||
caminharPre(i.dir); // Elementos da direita.
|
caminharPre(i.esq); // Elementos da esquerda.
|
||||||
}
|
caminharPre(i.dir); // Elementos da direita.
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo publico iterativo para exibir elementos.
|
* Metodo publico iterativo para exibir elementos.
|
||||||
*/
|
*/
|
||||||
public void caminharPos() {
|
public void caminharPos() {
|
||||||
System.out.print("[ ");
|
System.out.print("[ ");
|
||||||
caminharPos(raiz);
|
caminharPos(raiz);
|
||||||
System.out.println("]");
|
System.out.println("]");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo privado recursivo para exibir elementos.
|
* Metodo privado recursivo para exibir elementos.
|
||||||
* @param i NoAN em analise.
|
*
|
||||||
*/
|
* @param i NoAN em analise.
|
||||||
private void caminharPos(NoAN i) {
|
*/
|
||||||
if (i != null) {
|
private void caminharPos(NoAN i) {
|
||||||
caminharPos(i.esq); // Elementos da esquerda.
|
if (i != null) {
|
||||||
caminharPos(i.dir); // Elementos da direita.
|
caminharPos(i.esq); // Elementos da esquerda.
|
||||||
System.out.print(i.elemento + ((i.cor) ? "(p) " : "(b) ")); // Conteudo do no.
|
caminharPos(i.dir); // Elementos da direita.
|
||||||
}
|
System.out.print(i.elemento + ((i.cor) ? "(p) " : "(b) ")); // Conteudo do no.
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
/**
|
* Metodo publico iterativo para inserir elemento.
|
||||||
* Metodo publico iterativo para inserir elemento.
|
*
|
||||||
* @param elemento Elemento a ser inserido.
|
* @param elemento Elemento a ser inserido.
|
||||||
* @throws Exception Se o elemento existir.
|
* @throws Exception Se o elemento existir.
|
||||||
*/
|
*/
|
||||||
public void inserir(int elemento) throws Exception {
|
public void inserir(int elemento) throws Exception {
|
||||||
|
// Se a arvore estiver vazia
|
||||||
//Se a arvore estiver vazia
|
if (raiz == null) {
|
||||||
if(raiz == null){
|
|
||||||
raiz = new NoAN(elemento);
|
raiz = new NoAN(elemento);
|
||||||
System.out.println("Antes, zero elementos. Agora, raiz(" + raiz.elemento + ").");
|
System.out.println("Antes, zero elementos. Agora, raiz(" + raiz.elemento + ").");
|
||||||
|
|
||||||
//Senao, se a arvore tiver um elemento
|
// Senao, se a arvore tiver um elemento
|
||||||
} else if (raiz.esq == null && raiz.dir == null){
|
} else if (raiz.esq == null && raiz.dir == null) {
|
||||||
if (elemento < raiz.elemento){
|
if (elemento < raiz.elemento) {
|
||||||
raiz.esq = new NoAN(elemento);
|
raiz.esq = new NoAN(elemento);
|
||||||
System.out.println("Antes, um elemento. Agora, raiz(" + raiz.elemento + ") e esq(" + raiz.esq.elemento +").");
|
System.out.println("Antes, um elemento. Agora, raiz(" + raiz.elemento + ") e esq(" + raiz.esq.elemento + ").");
|
||||||
} else {
|
} else {
|
||||||
raiz.dir = new NoAN(elemento);
|
raiz.dir = new NoAN(elemento);
|
||||||
System.out.println("Antes, um elemento. Agora, raiz(" + raiz.elemento + ") e dir(" + raiz.dir.elemento +").");
|
System.out.println("Antes, um elemento. Agora, raiz(" + raiz.elemento + ") e dir(" + raiz.dir.elemento + ").");
|
||||||
}
|
}
|
||||||
|
|
||||||
//Senao, se a arvore tiver dois elementos (raiz e dir)
|
// Senao, se a arvore tiver dois elementos (raiz e dir)
|
||||||
} else if (raiz.esq == null){
|
} else if (raiz.esq == null) {
|
||||||
|
if (elemento < raiz.elemento) {
|
||||||
if(elemento < raiz.elemento){
|
|
||||||
raiz.esq = new NoAN(elemento);
|
raiz.esq = new NoAN(elemento);
|
||||||
System.out.println("Antes, dois elementos(A). Agora, raiz(" + raiz.elemento + "), esq (" + raiz.esq.elemento +") e dir(" + raiz.dir.elemento +").");
|
System.out.println("Antes, dois elementos(A). Agora, raiz(" + raiz.elemento + "), esq (" + raiz.esq.elemento + ") e dir(" + raiz.dir.elemento + ").");
|
||||||
|
|
||||||
} else if (elemento < raiz.dir.elemento){
|
} else if (elemento < raiz.dir.elemento) {
|
||||||
raiz.esq = new NoAN(raiz.elemento);
|
raiz.esq = new NoAN(raiz.elemento);
|
||||||
raiz.elemento = elemento;
|
raiz.elemento = elemento;
|
||||||
System.out.println("Antes, dois elementos(B). Agora, raiz(" + raiz.elemento + "), esq (" + raiz.esq.elemento +") e dir(" + raiz.dir.elemento +").");
|
System.out.println("Antes, dois elementos(B). Agora, raiz(" + raiz.elemento + "), esq (" + raiz.esq.elemento + ") e dir(" + raiz.dir.elemento + ").");
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
raiz.esq = new NoAN(raiz.elemento);
|
raiz.esq = new NoAN(raiz.elemento);
|
||||||
raiz.elemento = raiz.dir.elemento;
|
raiz.elemento = raiz.dir.elemento;
|
||||||
raiz.dir.elemento = elemento;
|
raiz.dir.elemento = elemento;
|
||||||
System.out.println("Antes, dois elementos(C). Agora, raiz(" + raiz.elemento + "), esq (" + raiz.esq.elemento +") e dir(" + raiz.dir.elemento +").");
|
System.out.println("Antes, dois elementos(C). Agora, raiz(" + raiz.elemento + "), esq (" + raiz.esq.elemento + ") e dir(" + raiz.dir.elemento + ").");
|
||||||
}
|
}
|
||||||
|
|
||||||
raiz.esq.cor = raiz.dir.cor = false;
|
raiz.esq.cor = raiz.dir.cor = false;
|
||||||
|
|
||||||
//Senao, se a arvore tiver dois elementos (raiz e esq)
|
// Senao, se a arvore tiver dois elementos (raiz e esq)
|
||||||
} else if (raiz.dir == null){
|
} else if (raiz.dir == null) {
|
||||||
|
if (elemento > raiz.elemento) {
|
||||||
if(elemento > raiz.elemento){
|
|
||||||
raiz.dir = new NoAN(elemento);
|
raiz.dir = new NoAN(elemento);
|
||||||
System.out.println("Antes, dois elementos(D). Agora, raiz(" + raiz.elemento + "), esq (" + raiz.esq.elemento +") e dir(" + raiz.dir.elemento +").");
|
System.out.println("Antes, dois elementos(D). Agora, raiz(" + raiz.elemento + "), esq (" + raiz.esq.elemento + ") e dir(" + raiz.dir.elemento + ").");
|
||||||
} else if (elemento > raiz.esq.elemento){
|
|
||||||
|
} else if (elemento > raiz.esq.elemento) {
|
||||||
raiz.dir = new NoAN(raiz.elemento);
|
raiz.dir = new NoAN(raiz.elemento);
|
||||||
raiz.elemento = elemento;
|
raiz.elemento = elemento;
|
||||||
System.out.println("Antes, dois elementos(E). Agora, raiz(" + raiz.elemento + "), esq (" + raiz.esq.elemento +") e dir(" + raiz.dir.elemento +").");
|
System.out.println("Antes, dois elementos(E). Agora, raiz(" + raiz.elemento + "), esq (" + raiz.esq.elemento + ") e dir(" + raiz.dir.elemento + ").");
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
raiz.dir = new NoAN(raiz.elemento);
|
raiz.dir = new NoAN(raiz.elemento);
|
||||||
raiz.elemento = raiz.esq.elemento;
|
raiz.elemento = raiz.esq.elemento;
|
||||||
raiz.esq.elemento = elemento;
|
raiz.esq.elemento = elemento;
|
||||||
System.out.println("Antes, dois elementos(F). Agora, raiz(" + raiz.elemento + "), esq (" + raiz.esq.elemento +") e dir(" + raiz.dir.elemento +").");
|
System.out.println("Antes, dois elementos(F). Agora, raiz(" + raiz.elemento + "), esq (" + raiz.esq.elemento + ") e dir(" + raiz.dir.elemento + ").");
|
||||||
}
|
}
|
||||||
|
|
||||||
raiz.esq.cor = raiz.dir.cor = false;
|
raiz.esq.cor = raiz.dir.cor = false;
|
||||||
|
|
||||||
//Senao, a arvore tem tres ou mais elementos
|
// Senao, a arvore tem tres ou mais elementos
|
||||||
} else {
|
} else {
|
||||||
System.out.println("Arvore com tres ou mais elementos...");
|
System.out.println("Arvore com tres ou mais elementos...");
|
||||||
inserir(elemento, null, null, null, raiz);
|
inserir(elemento, null, null, null, raiz);
|
||||||
}
|
}
|
||||||
|
|
||||||
raiz.cor = false;
|
raiz.cor = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void balancear(NoAN bisavo, NoAN avo, NoAN pai, NoAN i){
|
private void balancear(NoAN bisavo, NoAN avo, NoAN pai, NoAN i) {
|
||||||
|
// Se o pai tambem e preto, reequilibrar a arvore, rotacionando o avo
|
||||||
//Se o pai tambem e preto, reequilibrar a arvore, rotacionando o avo
|
if (pai.cor == true) {
|
||||||
if(pai.cor == true){
|
// 4 tipos de reequilibrios e acoplamento
|
||||||
|
if (pai.elemento > avo.elemento) { // rotacao a esquerda ou direita-esquerda
|
||||||
//4 tipos de reequilibrios e acoplamento
|
if (i.elemento > pai.elemento) {
|
||||||
if(pai.elemento > avo.elemento){ // rotacao a esquerda ou direita-esquerda
|
|
||||||
if(i.elemento > pai.elemento){
|
|
||||||
avo = rotacaoEsq(avo);
|
avo = rotacaoEsq(avo);
|
||||||
} else {
|
} else {
|
||||||
avo = rotacaoDirEsq(avo);
|
avo = rotacaoDirEsq(avo);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else { // rotacao a direita ou esquerda-direita
|
} else { // rotacao a direita ou esquerda-direita
|
||||||
if(i.elemento < pai.elemento){
|
if (i.elemento < pai.elemento) {
|
||||||
avo = rotacaoDir(avo);
|
avo = rotacaoDir(avo);
|
||||||
} else {
|
} else {
|
||||||
avo = rotacaoEsqDir(avo);
|
avo = rotacaoEsqDir(avo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (bisavo == null) {
|
||||||
if (bisavo == null){
|
|
||||||
raiz = avo;
|
raiz = avo;
|
||||||
} else if(avo.elemento < bisavo.elemento){
|
} else if (avo.elemento < bisavo.elemento) {
|
||||||
bisavo.esq = avo;
|
bisavo.esq = avo;
|
||||||
} else {
|
} else {
|
||||||
bisavo.dir = avo;
|
bisavo.dir = avo;
|
||||||
}
|
}
|
||||||
|
// reestabelecer as cores apos a rotacao
|
||||||
//reestabelecer as cores apos a rotacao
|
|
||||||
avo.cor = false;
|
avo.cor = false;
|
||||||
avo.esq.cor = avo.dir.cor = true;
|
avo.esq.cor = avo.dir.cor = true;
|
||||||
System.out.println("Reestabeler cores: avo(" + avo.elemento + "->branco) e avo.esq / avo.dir(" + avo.esq.elemento + "," + avo.dir.elemento + "-> pretos)");
|
System.out.println("Reestabeler cores: avo(" + avo.elemento + "->branco) e avo.esq / avo.dir("
|
||||||
} //if(pai.cor == true)
|
+ avo.esq.elemento + "," + avo.dir.elemento + "-> pretos)");
|
||||||
|
} // if(pai.cor == true)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo privado recursivo para inserir elemento.
|
* Metodo privado recursivo para inserir elemento.
|
||||||
* @param elemento Elemento a ser inserido.
|
*
|
||||||
* @param avo NoAN em analise.
|
* @param elemento Elemento a ser inserido.
|
||||||
* @param pai NoAN em analise.
|
* @param avo NoAN em analise.
|
||||||
* @param i NoAN em analise.
|
* @param pai NoAN em analise.
|
||||||
* @throws Exception Se o elemento existir.
|
* @param i NoAN em analise.
|
||||||
*/
|
* @throws Exception Se o elemento existir.
|
||||||
private void inserir(int elemento, NoAN bisavo, NoAN avo, NoAN pai, NoAN i) throws Exception {
|
*/
|
||||||
if (i == null) {
|
private void inserir(int elemento, NoAN bisavo, NoAN avo, NoAN pai, NoAN i) throws Exception {
|
||||||
|
if (i == null) {
|
||||||
if(elemento < pai.elemento){
|
if (elemento < pai.elemento) {
|
||||||
i = pai.esq = new NoAN(elemento, true);
|
i = pai.esq = new NoAN(elemento, true);
|
||||||
} else {
|
} else {
|
||||||
i = pai.dir = new NoAN(elemento, true);
|
i = pai.dir = new NoAN(elemento, true);
|
||||||
}
|
}
|
||||||
|
if (pai.cor == true) {
|
||||||
if(pai.cor == true){
|
|
||||||
balancear(bisavo, avo, pai, i);
|
balancear(bisavo, avo, pai, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
// Achou um 4-no: eh preciso fragmeta-lo e reequilibrar a arvore
|
||||||
//Achou um 4-no: eh preciso fragmeta-lo e reequilibrar a arvore
|
if (i.esq != null && i.dir != null && i.esq.cor == true && i.dir.cor == true) {
|
||||||
if(i.esq != null && i.dir != null && i.esq.cor == true && i.dir.cor == true){
|
|
||||||
i.cor = true;
|
i.cor = true;
|
||||||
i.esq.cor = i.dir.cor = false;
|
i.esq.cor = i.dir.cor = false;
|
||||||
if(i == raiz){
|
if (i == raiz) {
|
||||||
i.cor = false;
|
i.cor = false;
|
||||||
}else if(pai.cor == true){
|
} else if (pai.cor == true) {
|
||||||
balancear(bisavo, avo, pai, i);
|
balancear(bisavo, avo, pai, i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (elemento < i.elemento) {
|
if (elemento < i.elemento) {
|
||||||
inserir(elemento, avo, pai, i, i.esq);
|
inserir(elemento, avo, pai, i, i.esq);
|
||||||
} else if (elemento > i.elemento) {
|
} else if (elemento > i.elemento) {
|
||||||
|
|
@ -259,7 +250,7 @@ public class Alvinegra {
|
||||||
throw new Exception("Erro inserir (elemento repetido)!");
|
throw new Exception("Erro inserir (elemento repetido)!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private NoAN rotacaoDir(NoAN no) {
|
private NoAN rotacaoDir(NoAN no) {
|
||||||
System.out.println("Rotacao DIR(" + no.elemento + ")");
|
System.out.println("Rotacao DIR(" + no.elemento + ")");
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,26 @@
|
||||||
/**
|
/**
|
||||||
* NoAN da arvore binaria
|
* NoAN da arvore binaria
|
||||||
|
*
|
||||||
* @author Max do Val Machado
|
* @author Max do Val Machado
|
||||||
*/
|
*/
|
||||||
class NoAN{
|
class NoAN {
|
||||||
public boolean cor;
|
public boolean cor;
|
||||||
public int elemento;
|
public int elemento;
|
||||||
public NoAN esq, dir;
|
public NoAN esq, dir;
|
||||||
public NoAN (){
|
|
||||||
this(-1);
|
public NoAN() {
|
||||||
|
this(-1);
|
||||||
}
|
}
|
||||||
public NoAN (int elemento){
|
|
||||||
this(elemento, false, null, null);
|
public NoAN(int elemento) {
|
||||||
|
this(elemento, false, null, null);
|
||||||
}
|
}
|
||||||
public NoAN (int elemento, boolean cor){
|
|
||||||
this(elemento, cor, null, null);
|
public NoAN(int elemento, boolean cor) {
|
||||||
|
this(elemento, cor, null, null);
|
||||||
}
|
}
|
||||||
public NoAN (int elemento, boolean cor, NoAN esq, NoAN dir){
|
|
||||||
|
public NoAN(int elemento, boolean cor, NoAN esq, NoAN dir) {
|
||||||
this.cor = cor;
|
this.cor = cor;
|
||||||
this.elemento = elemento;
|
this.elemento = elemento;
|
||||||
this.esq = esq;
|
this.esq = esq;
|
||||||
|
|
|
||||||
|
|
@ -1,51 +1,48 @@
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Principal para Arvore Binaria de Pesquisa
|
* Principal para Arvore Binaria de Pesquisa
|
||||||
|
*
|
||||||
* @author Max do Val Machado
|
* @author Max do Val Machado
|
||||||
*/
|
*/
|
||||||
public class Principal {
|
public class Principal {
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
Alvinegra arvore = new Alvinegra();
|
Alvinegra arvore = new Alvinegra();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
arvore.inserir(1);
|
* arvore.inserir(1);
|
||||||
arvore.inserir(2);
|
* arvore.inserir(2);
|
||||||
arvore.inserir(3);
|
* arvore.inserir(3);
|
||||||
arvore.mostrarPre();
|
* arvore.mostrarPre();
|
||||||
|
*
|
||||||
arvore = new Alvinegra();
|
* arvore = new Alvinegra();
|
||||||
arvore.inserir(1);
|
* arvore.inserir(1);
|
||||||
arvore.inserir(3);
|
* arvore.inserir(3);
|
||||||
arvore.inserir(2);
|
* arvore.inserir(2);
|
||||||
arvore.mostrarPre();
|
* arvore.mostrarPre();
|
||||||
|
*
|
||||||
arvore = new Alvinegra();
|
* arvore = new Alvinegra();
|
||||||
arvore.inserir(2);
|
* arvore.inserir(2);
|
||||||
arvore.inserir(1);
|
* arvore.inserir(1);
|
||||||
arvore.inserir(3);
|
* arvore.inserir(3);
|
||||||
arvore.mostrarPre();
|
* arvore.mostrarPre();
|
||||||
|
*
|
||||||
arvore = new Alvinegra();
|
* arvore = new Alvinegra();
|
||||||
arvore.inserir(2);
|
* arvore.inserir(2);
|
||||||
arvore.inserir(3);
|
* arvore.inserir(3);
|
||||||
arvore.inserir(1);
|
* arvore.inserir(1);
|
||||||
arvore.mostrarPre();
|
* arvore.mostrarPre();
|
||||||
|
*
|
||||||
arvore = new Alvinegra();
|
* arvore = new Alvinegra();
|
||||||
arvore.inserir(3);
|
* arvore.inserir(3);
|
||||||
arvore.inserir(1);
|
* arvore.inserir(1);
|
||||||
arvore.inserir(2);
|
* arvore.inserir(2);
|
||||||
arvore.mostrarPre();
|
* arvore.mostrarPre();
|
||||||
|
*
|
||||||
arvore = new Alvinegra();
|
* arvore = new Alvinegra();
|
||||||
arvore.inserir(3);
|
* arvore.inserir(3);
|
||||||
arvore.inserir(2);
|
* arvore.inserir(2);
|
||||||
arvore.inserir(1);
|
* arvore.inserir(1);
|
||||||
arvore.mostrarPre();
|
* arvore.mostrarPre();
|
||||||
*/
|
*/
|
||||||
|
|
||||||
arvore = new Alvinegra();
|
|
||||||
arvore.inserir(4);
|
arvore.inserir(4);
|
||||||
arvore.inserir(35);
|
arvore.inserir(35);
|
||||||
arvore.inserir(10);
|
arvore.inserir(10);
|
||||||
|
|
@ -57,21 +54,20 @@ public class Principal {
|
||||||
arvore.inserir(7);
|
arvore.inserir(7);
|
||||||
arvore.inserir(40);
|
arvore.inserir(40);
|
||||||
arvore.inserir(20);
|
arvore.inserir(20);
|
||||||
arvore.mostrarPre();
|
arvore.caminharPre();
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
arvore = new Alvinegra();
|
* arvore = new Alvinegra();
|
||||||
Random gerador = new Random();
|
* Random gerador = new Random();
|
||||||
gerador.setSeed(4);
|
* gerador.setSeed(4);
|
||||||
for(int i = 0; i < 4000; i++){
|
* for(int i = 0; i < 4000; i++){
|
||||||
int elemento;
|
* int elemento;
|
||||||
do {
|
* do {
|
||||||
elemento = ((int)Math.abs(gerador.nextInt())) % 100000;
|
* elemento = ((int)Math.abs(gerador.nextInt())) % 100000;
|
||||||
} while (arvore.pesquisar(elemento) == true);
|
* } while (arvore.pesquisar(elemento) == true);
|
||||||
arvore.inserir(elemento);
|
* arvore.inserir(elemento);
|
||||||
arvore.mostrarPre();
|
* arvore.mostrarPre();
|
||||||
}
|
* }
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
* @author Max do Val Machado
|
* @author Max do Val Machado
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class AVL {
|
public class AVL {
|
||||||
private No raiz; // Raiz da arvore.
|
private No raiz; // Raiz da arvore.
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -228,7 +228,6 @@
|
||||||
|
|
||||||
noEsq.dir = no;
|
noEsq.dir = no;
|
||||||
no.esq = noEsqDir;
|
no.esq = noEsqDir;
|
||||||
|
|
||||||
no.setNivel(); // Atualizar o nivel do no
|
no.setNivel(); // Atualizar o nivel do no
|
||||||
noEsq.setNivel(); // Atualizar o nivel do noEsq
|
noEsq.setNivel(); // Atualizar o nivel do noEsq
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,8 @@ public class Principal {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
try {
|
try {
|
||||||
AVL avl = new AVL();
|
AVL avl = new AVL();
|
||||||
int array[] = {4,35,10,13,3,30,15,12,7,40,20};
|
//int array[] = {4,35,10,13,3,30,15,12,7,40,20};
|
||||||
//int array[] = {1,2,3,4,5,6,7,8,9,10};
|
int array[] = {1,2,3,4,5,6,7,8,9,10};
|
||||||
for(int item: array){
|
for(int item: array){
|
||||||
System.out.println("Inserindo -> " + item);
|
System.out.println("Inserindo -> " + item);
|
||||||
avl.inserir(item);
|
avl.inserir(item);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue