buf fixed!
This commit is contained in:
parent
aae3f0549c
commit
d979f0a58c
|
|
@ -8,31 +8,31 @@ typedef struct Celula {
|
||||||
} Celula;
|
} Celula;
|
||||||
|
|
||||||
Celula* novaCelula(int elemento) {
|
Celula* novaCelula(int elemento) {
|
||||||
Celula* nova = (Celula*) malloc(sizeof(Celula));
|
Celula* nova = (Celula*) malloc(sizeof(Celula));
|
||||||
nova->elemento = elemento;
|
nova->elemento = elemento;
|
||||||
nova->prox = NULL;
|
nova->prox = NULL;
|
||||||
return nova;
|
return nova;
|
||||||
}
|
}
|
||||||
|
|
||||||
Celula* primeiro;
|
Celula* primeiro;
|
||||||
|
|
||||||
void start () {
|
void start () {
|
||||||
primeiro = novaCelula(-1);
|
primeiro = novaCelula(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void inserir(int x) {
|
void inserir(int x) {
|
||||||
primeiro->prox = novaCelula(x);
|
primeiro->prox = novaCelula(x);
|
||||||
Celula* tmp = primeiro;
|
Celula* tmp = primeiro;
|
||||||
primeiro = primeiro->prox;
|
primeiro = primeiro->prox;
|
||||||
free(tmp);
|
free(tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
start();
|
start();
|
||||||
while(true){
|
while(true){
|
||||||
inserir(0);
|
inserir(0);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -8,7 +8,7 @@ public class FilaNativa {
|
||||||
fila.add("Cruzeiro");
|
fila.add("Cruzeiro");
|
||||||
fila.add("América");
|
fila.add("América");
|
||||||
|
|
||||||
while (fila.isEmpty() == false){
|
while (!fila.isEmpty()){
|
||||||
System.out.println("Retirando da fila: " + fila.remove());
|
System.out.println("Retirando da fila: " + fila.remove());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,3 +33,4 @@ class ListaNativa {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,23 +4,23 @@
|
||||||
* @version 2 01/2015
|
* @version 2 01/2015
|
||||||
*/
|
*/
|
||||||
class Celula {
|
class Celula {
|
||||||
public int elemento; // Elemento inserido na celula.
|
public int elemento; // Elemento inserido na celula.
|
||||||
public Celula prox; // Aponta a celula prox.
|
public Celula prox; // Aponta a celula prox.
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construtor da classe.
|
* Construtor da classe.
|
||||||
*/
|
*/
|
||||||
public Celula() {
|
public Celula() {
|
||||||
this(0);
|
this(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construtor da classe.
|
* Construtor da classe.
|
||||||
* @param elemento int inserido na celula.
|
* @param elemento int inserido na celula.
|
||||||
*/
|
*/
|
||||||
public Celula(int elemento) {
|
public Celula(int elemento) {
|
||||||
this.elemento = elemento;
|
this.elemento = elemento;
|
||||||
this.prox = null;
|
this.prox = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,24 +1,23 @@
|
||||||
|
|
||||||
|
|
||||||
class ColetaLixo {
|
class ColetaLixo {
|
||||||
private Celula primeiro;
|
private Celula primeiro;
|
||||||
|
|
||||||
public ColetaLixo () {
|
public ColetaLixo () {
|
||||||
primeiro = new Celula();
|
primeiro = new Celula();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void inserir(int x) {
|
public void inserir(int x) {
|
||||||
primeiro.prox = new Celula(x);
|
primeiro.prox = new Celula(x);
|
||||||
primeiro = primeiro.prox;
|
primeiro = primeiro.prox;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main (String [] args) {
|
public static void main (String [] args) {
|
||||||
ColetaLixo coletaLixo = new ColetaLixo ();
|
ColetaLixo coletaLixo = new ColetaLixo ();
|
||||||
|
while(true){
|
||||||
while(true){
|
coletaLixo.inserir(0);
|
||||||
coletaLixo.inserir(0);
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -198,3 +198,6 @@ void maiorEsq(No** i, No** j) {
|
||||||
free(del);
|
free(del);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,5 @@ int main(){
|
||||||
caminharPre();
|
caminharPre();
|
||||||
caminharPos();
|
caminharPos();
|
||||||
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
* Construtor da classe.
|
* Construtor da classe.
|
||||||
*/
|
*/
|
||||||
ArvoreBinaria::ArvoreBinaria() {
|
ArvoreBinaria::ArvoreBinaria() {
|
||||||
raiz = NULL;
|
raiz = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -20,7 +20,7 @@ ArvoreBinaria::ArvoreBinaria() {
|
||||||
* <code>false</code> em caso contrario.
|
* <code>false</code> em caso contrario.
|
||||||
*/
|
*/
|
||||||
bool ArvoreBinaria::pesquisar(int x) {
|
bool ArvoreBinaria::pesquisar(int x) {
|
||||||
return pesquisar(x, raiz);
|
return pesquisar(x, raiz);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -31,29 +31,29 @@ bool ArvoreBinaria::pesquisar(int x) {
|
||||||
* <code>false</code> em caso contrario.
|
* <code>false</code> em caso contrario.
|
||||||
*/
|
*/
|
||||||
bool ArvoreBinaria::pesquisar(int x, No* i) {
|
bool ArvoreBinaria::pesquisar(int x, No* i) {
|
||||||
bool resp;
|
bool resp;
|
||||||
if (i == NULL) {
|
if (i == NULL) {
|
||||||
resp = false;
|
resp = false;
|
||||||
|
|
||||||
} else if (x == i->elemento) {
|
} else if (x == i->elemento) {
|
||||||
resp = true;
|
resp = true;
|
||||||
|
|
||||||
} else if (x < i->elemento) {
|
} else if (x < i->elemento) {
|
||||||
resp = pesquisar(x, i->esq);
|
resp = pesquisar(x, i->esq);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
resp = pesquisar(x, i->dir);
|
resp = pesquisar(x, i->dir);
|
||||||
}
|
}
|
||||||
return resp;
|
return resp;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo publico iterativo para exibir elementos.
|
* Metodo publico iterativo para exibir elementos.
|
||||||
*/
|
*/
|
||||||
void ArvoreBinaria::caminharCentral() {
|
void ArvoreBinaria::caminharCentral() {
|
||||||
cout << "[ ";
|
cout << "[ ";
|
||||||
caminharCentral(raiz);
|
caminharCentral(raiz);
|
||||||
cout << "]\n";
|
cout << "]\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -61,20 +61,20 @@ void ArvoreBinaria::caminharCentral() {
|
||||||
* @param i No em analise.
|
* @param i No em analise.
|
||||||
*/
|
*/
|
||||||
void ArvoreBinaria::caminharCentral(No* i) {
|
void ArvoreBinaria::caminharCentral(No* i) {
|
||||||
if (i != NULL) {
|
if (i != NULL) {
|
||||||
caminharCentral(i->esq); // Elementos da esquerda.
|
caminharCentral(i->esq); // Elementos da esquerda.
|
||||||
cout << i->elemento << " "; // Conteudo do no.
|
cout << i->elemento << " "; // Conteudo do no.
|
||||||
caminharCentral(i->dir); // Elementos da direita.
|
caminharCentral(i->dir); // Elementos da direita.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo publico iterativo para exibir elementos.
|
* Metodo publico iterativo para exibir elementos.
|
||||||
*/
|
*/
|
||||||
void ArvoreBinaria::caminharPre() {
|
void ArvoreBinaria::caminharPre() {
|
||||||
cout << "[ ";
|
cout << "[ ";
|
||||||
caminharPre(raiz);
|
caminharPre(raiz);
|
||||||
cout << "]\n";
|
cout << "]\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -82,20 +82,20 @@ void ArvoreBinaria::caminharPre() {
|
||||||
* @param i No em analise.
|
* @param i No em analise.
|
||||||
*/
|
*/
|
||||||
void ArvoreBinaria::caminharPre(No* i) {
|
void ArvoreBinaria::caminharPre(No* i) {
|
||||||
if (i != NULL) {
|
if (i != NULL) {
|
||||||
cout << i->elemento << " "; // Conteudo do no.
|
cout << i->elemento << " "; // Conteudo do no.
|
||||||
caminharPre(i->esq); // Elementos da esquerda.
|
caminharPre(i->esq); // Elementos da esquerda.
|
||||||
caminharPre(i->dir); // Elementos da direita.
|
caminharPre(i->dir); // Elementos da direita.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo publico iterativo para exibir elementos.
|
* Metodo publico iterativo para exibir elementos.
|
||||||
*/
|
*/
|
||||||
void ArvoreBinaria::caminharPos() {
|
void ArvoreBinaria::caminharPos() {
|
||||||
cout << "[ ";
|
cout << "[ ";
|
||||||
caminharPos(raiz);
|
caminharPos(raiz);
|
||||||
cout << "]\n";
|
cout << "]\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -103,11 +103,11 @@ void ArvoreBinaria::caminharPos() {
|
||||||
* @param i No em analise.
|
* @param i No em analise.
|
||||||
*/
|
*/
|
||||||
void ArvoreBinaria::caminharPos(No* i) {
|
void ArvoreBinaria::caminharPos(No* i) {
|
||||||
if (i != NULL) {
|
if (i != NULL) {
|
||||||
caminharPos(i->esq); // Elementos da esquerda.
|
caminharPos(i->esq); // Elementos da esquerda.
|
||||||
caminharPos(i->dir); // Elementos da direita.
|
caminharPos(i->dir); // Elementos da direita.
|
||||||
cout << i->elemento << " "; // Conteudo do no.
|
cout << i->elemento << " "; // Conteudo do no.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -115,7 +115,7 @@ void ArvoreBinaria::caminharPos(No* i) {
|
||||||
* @param x Elemento a ser inserido.
|
* @param x Elemento a ser inserido.
|
||||||
*/
|
*/
|
||||||
void ArvoreBinaria::inserir(int x) {
|
void ArvoreBinaria::inserir(int x) {
|
||||||
inserir(x, raiz);
|
inserir(x, raiz);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -124,26 +124,26 @@ void ArvoreBinaria::inserir(int x) {
|
||||||
* @param i No em analise.
|
* @param i No em analise.
|
||||||
*/
|
*/
|
||||||
void ArvoreBinaria::inserir(int x, No* &i) {
|
void ArvoreBinaria::inserir(int x, No* &i) {
|
||||||
if (i == NULL) {
|
if (i == NULL) {
|
||||||
i = new No(x);
|
i = new No(x);
|
||||||
|
|
||||||
} else if (x < i->elemento) {
|
} else if (x < i->elemento) {
|
||||||
inserir(x, i->esq);
|
inserir(x, i->esq);
|
||||||
|
|
||||||
} else if (x > i->elemento) {
|
} else if (x > i->elemento) {
|
||||||
inserir(x, i->dir);
|
inserir(x, i->dir);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
errx(1, "Erro ao inserir!");
|
errx(1, "Erro ao inserir!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo publico iterativo para remover elemento.
|
* Metodo publico iterativo para remover elemento.
|
||||||
* @param x Elemento a ser removido.
|
* @param x Elemento a ser removido.
|
||||||
*/
|
*/
|
||||||
void ArvoreBinaria::remover(int x) {
|
void ArvoreBinaria::remover(int x) {
|
||||||
remover(x, raiz);
|
remover(x, raiz);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -152,31 +152,31 @@ void ArvoreBinaria::remover(int x) {
|
||||||
* @param i No em analise.
|
* @param i No em analise.
|
||||||
*/
|
*/
|
||||||
void ArvoreBinaria::remover(int x, No* &i) {
|
void ArvoreBinaria::remover(int x, No* &i) {
|
||||||
if (i == NULL) {
|
if (i == NULL) {
|
||||||
errx(1, "Erro ao remover!");
|
errx(1, "Erro ao remover!");
|
||||||
|
|
||||||
} else if (x < i->elemento) {
|
} else if (x < i->elemento) {
|
||||||
remover(x, i->esq);
|
remover(x, i->esq);
|
||||||
|
|
||||||
} else if (x > i->elemento) {
|
} else if (x > i->elemento) {
|
||||||
remover(x, i->dir);
|
remover(x, i->dir);
|
||||||
|
|
||||||
// Sem no a direita.
|
// Sem no a direita.
|
||||||
} else if (i->dir == NULL) {
|
} else if (i->dir == NULL) {
|
||||||
No* del = i;
|
No* del = i;
|
||||||
i = i->esq;
|
i = i->esq;
|
||||||
delete del;
|
delete del;
|
||||||
|
|
||||||
// Sem no a esquerda.
|
// Sem no a esquerda.
|
||||||
} else if (i->esq == NULL) {
|
} else if (i->esq == NULL) {
|
||||||
No* del = i;
|
No* del = i;
|
||||||
i = i->dir;
|
i = i->dir;
|
||||||
delete del;
|
delete del;
|
||||||
|
|
||||||
// No a esquerda e no a direita.
|
// No a esquerda e no a direita.
|
||||||
} else {
|
} else {
|
||||||
maiorEsq(i, i->esq);
|
maiorEsq(i, i->esq);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -186,15 +186,15 @@ void ArvoreBinaria::remover(int x, No* &i) {
|
||||||
* @param j No da subarvore esquerda.
|
* @param j No da subarvore esquerda.
|
||||||
*/
|
*/
|
||||||
void ArvoreBinaria::maiorEsq(No* i, No* &j) {
|
void ArvoreBinaria::maiorEsq(No* i, No* &j) {
|
||||||
// Encontrou o maximo da subarvore esquerda.
|
// Encontrou o maximo da subarvore esquerda.
|
||||||
if (j->dir == NULL) {
|
if (j->dir == NULL) {
|
||||||
No* del = j;
|
No* del = j;
|
||||||
i->elemento = j->elemento; // Substitui i por j.
|
i->elemento = j->elemento; // Substitui i por j.
|
||||||
j = j->esq; // Substitui j por j.ESQ.
|
j = j->esq; // Substitui j por j.ESQ.
|
||||||
delete del;
|
delete del;
|
||||||
|
|
||||||
// Existe no a direita.
|
// Existe no a direita.
|
||||||
} else {
|
} else {
|
||||||
maiorEsq(i, j->dir); // Caminha para direita.
|
maiorEsq(i, j->dir); // Caminha para direita.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,22 +6,22 @@
|
||||||
#include "no.h"
|
#include "no.h"
|
||||||
|
|
||||||
class ArvoreBinaria {
|
class ArvoreBinaria {
|
||||||
private:
|
private:
|
||||||
No* raiz; // Raiz da arvore.
|
No* raiz; // Raiz da arvore.
|
||||||
bool pesquisar(int, No*);
|
bool pesquisar(int, No*);
|
||||||
void caminharCentral(No*);
|
void caminharCentral(No*);
|
||||||
void caminharPre(No*);
|
void caminharPre(No*);
|
||||||
void caminharPos(No*);
|
void caminharPos(No*);
|
||||||
void inserir(int, No* &);
|
void inserir(int, No* &);
|
||||||
void remover(int, No* &);
|
void remover(int, No* &);
|
||||||
void antecessor(No*, No* &);
|
void maiorEsq(No*, No* &);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ArvoreBinaria();
|
ArvoreBinaria();
|
||||||
bool pesquisar(int);
|
bool pesquisar(int);
|
||||||
void caminharCentral();
|
void caminharCentral();
|
||||||
void caminharPre();
|
void caminharPre();
|
||||||
void caminharPos();
|
void caminharPos();
|
||||||
void inserir(int);
|
void inserir(int);
|
||||||
void remover(int);
|
void remover(int);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,8 @@
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
class No {
|
class No {
|
||||||
public:
|
public:
|
||||||
int elemento; // Conteudo do no.
|
int elemento; // Conteudo do no.
|
||||||
No *esq, *dir; // Filhos da esq e dir.
|
No *esq, *dir; // Filhos da esq e dir.
|
||||||
No(int);
|
No(int);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -3,407 +3,400 @@
|
||||||
* @author Max do Val Machado
|
* @author Max do Val Machado
|
||||||
*/
|
*/
|
||||||
public class ArvoreBinaria {
|
public class ArvoreBinaria {
|
||||||
private No raiz; // Raiz da arvore.
|
private No raiz; // Raiz da arvore.
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construtor da classe.
|
* Construtor da classe.
|
||||||
*/
|
*/
|
||||||
public ArvoreBinaria() {
|
public ArvoreBinaria() {
|
||||||
raiz = null;
|
raiz = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo publico iterativo para pesquisar elemento.
|
* Metodo publico iterativo para pesquisar elemento.
|
||||||
* @param x Elemento que sera procurado.
|
* @param x Elemento que sera procurado.
|
||||||
* @return <code>true</code> se o elemento existir,
|
* @return <code>true</code> se o elemento existir,
|
||||||
* <code>false</code> em caso contrario.
|
* <code>false</code> em caso contrario.
|
||||||
*/
|
*/
|
||||||
public boolean pesquisar(int x) {
|
public boolean pesquisar(int x) {
|
||||||
return pesquisar(x, raiz);
|
return pesquisar(x, raiz);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo privado recursivo para pesquisar elemento.
|
* Metodo privado recursivo para pesquisar elemento.
|
||||||
* @param x Elemento que sera procurado.
|
* @param x Elemento que sera procurado.
|
||||||
* @param i No em analise.
|
* @param i No em analise.
|
||||||
* @return <code>true</code> se o elemento existir,
|
* @return <code>true</code> se o elemento existir,
|
||||||
* <code>false</code> em caso contrario.
|
* <code>false</code> em caso contrario.
|
||||||
*/
|
*/
|
||||||
private boolean pesquisar(int x, No i) {
|
private boolean pesquisar(int x, No i) {
|
||||||
boolean resp;
|
boolean resp;
|
||||||
if (i == null) {
|
if (i == null) {
|
||||||
resp = false;
|
resp = false;
|
||||||
|
} else if (x == i.elemento) {
|
||||||
|
resp = true;
|
||||||
|
} else if (x < i.elemento) {
|
||||||
|
resp = pesquisar(x, i.esq);
|
||||||
|
} else {
|
||||||
|
resp = pesquisar(x, i.dir);
|
||||||
|
}
|
||||||
|
return resp;
|
||||||
|
}
|
||||||
|
|
||||||
} else if (x == i.elemento) {
|
/**
|
||||||
resp = true;
|
* Metodo publico iterativo para exibir elementos.
|
||||||
|
*/
|
||||||
|
public void caminharCentral() {
|
||||||
|
System.out.print("[ ");
|
||||||
|
caminharCentral(raiz);
|
||||||
|
System.out.println("]");
|
||||||
|
}
|
||||||
|
|
||||||
} else if (x < i.elemento) {
|
/**
|
||||||
resp = pesquisar(x, i.esq);
|
* Metodo privado recursivo para exibir elementos.
|
||||||
|
* @param i No em analise.
|
||||||
|
*/
|
||||||
|
private void caminharCentral(No i) {
|
||||||
|
if (i != null) {
|
||||||
|
caminharCentral(i.esq); // Elementos da esquerda.
|
||||||
|
System.out.print(i.elemento + " "); // Conteudo do no.
|
||||||
|
caminharCentral(i.dir); // Elementos da direita.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
/**
|
||||||
resp = pesquisar(x, i.dir);
|
* Metodo publico iterativo para exibir elementos.
|
||||||
}
|
*/
|
||||||
return resp;
|
public void caminharPre() {
|
||||||
}
|
System.out.print("[ ");
|
||||||
|
caminharPre(raiz);
|
||||||
|
System.out.println("]");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo publico iterativo para exibir elementos.
|
* Metodo privado recursivo para exibir elementos.
|
||||||
*/
|
* @param i No em analise.
|
||||||
public void caminharCentral() {
|
*/
|
||||||
System.out.print("[ ");
|
private void caminharPre(No i) {
|
||||||
caminharCentral(raiz);
|
if (i != null) {
|
||||||
System.out.println("]");
|
System.out.print(i.elemento + " "); // Conteudo do no.
|
||||||
}
|
caminharPre(i.esq); // Elementos da esquerda.
|
||||||
|
caminharPre(i.dir); // Elementos da direita.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo privado recursivo para exibir elementos.
|
* Metodo publico iterativo para exibir elementos.
|
||||||
* @param i No em analise.
|
*/
|
||||||
*/
|
public void caminharPos() {
|
||||||
private void caminharCentral(No i) {
|
System.out.print("[ ");
|
||||||
if (i != null) {
|
caminharPos(raiz);
|
||||||
caminharCentral(i.esq); // Elementos da esquerda.
|
System.out.println("]");
|
||||||
System.out.print(i.elemento + " "); // Conteudo do no.
|
}
|
||||||
caminharCentral(i.dir); // Elementos da direita.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo publico iterativo para exibir elementos.
|
* Metodo privado recursivo para exibir elementos.
|
||||||
*/
|
* @param i No em analise.
|
||||||
public void caminharPre() {
|
*/
|
||||||
System.out.print("[ ");
|
private void caminharPos(No i) {
|
||||||
caminharPre(raiz);
|
if (i != null) {
|
||||||
System.out.println("]");
|
caminharPos(i.esq); // Elementos da esquerda.
|
||||||
}
|
caminharPos(i.dir); // Elementos da direita.
|
||||||
|
System.out.print(i.elemento + " "); // Conteudo do no.
|
||||||
/**
|
}
|
||||||
* Metodo privado recursivo para exibir elementos.
|
}
|
||||||
* @param i No em analise.
|
|
||||||
*/
|
|
||||||
private void caminharPre(No i) {
|
|
||||||
if (i != null) {
|
|
||||||
System.out.print(i.elemento + " "); // Conteudo do no.
|
|
||||||
caminharPre(i.esq); // Elementos da esquerda.
|
|
||||||
caminharPre(i.dir); // Elementos da direita.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Metodo publico iterativo para exibir elementos.
|
|
||||||
*/
|
|
||||||
public void caminharPos() {
|
|
||||||
System.out.print("[ ");
|
|
||||||
caminharPos(raiz);
|
|
||||||
System.out.println("]");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Metodo privado recursivo para exibir elementos.
|
|
||||||
* @param i No em analise.
|
|
||||||
*/
|
|
||||||
private void caminharPos(No i) {
|
|
||||||
if (i != null) {
|
|
||||||
caminharPos(i.esq); // Elementos da esquerda.
|
|
||||||
caminharPos(i.dir); // Elementos da direita.
|
|
||||||
System.out.print(i.elemento + " "); // Conteudo do no.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo publico iterativo para inserir elemento.
|
* Metodo publico iterativo para inserir elemento.
|
||||||
* @param x Elemento a ser inserido.
|
* @param x Elemento a ser inserido.
|
||||||
* @throws Exception Se o elemento existir.
|
* @throws Exception Se o elemento existir.
|
||||||
*/
|
*/
|
||||||
public void inserir(int x) throws Exception {
|
public void inserir(int x) throws Exception {
|
||||||
raiz = inserir(x, raiz);
|
raiz = inserir(x, raiz);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo privado recursivo para inserir elemento.
|
* Metodo privado recursivo para inserir elemento.
|
||||||
* @param x Elemento a ser inserido.
|
* @param x Elemento a ser inserido.
|
||||||
* @param i No em analise.
|
* @param i No em analise.
|
||||||
* @return No em analise, alterado ou nao.
|
* @return No em analise, alterado ou nao.
|
||||||
* @throws Exception Se o elemento existir.
|
* @throws Exception Se o elemento existir.
|
||||||
*/
|
*/
|
||||||
private No inserir(int x, No i) throws Exception {
|
private No inserir(int x, No i) throws Exception {
|
||||||
if (i == null) {
|
if (i == null) {
|
||||||
i = new No(x);
|
i = new No(x);
|
||||||
|
} else if (x < i.elemento) {
|
||||||
|
i.esq = inserir(x, i.esq);
|
||||||
|
} else if (x > i.elemento) {
|
||||||
|
i.dir = inserir(x, i.dir);
|
||||||
|
} else {
|
||||||
|
throw new Exception("Erro ao inserir!");
|
||||||
|
}
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
} else if (x < i.elemento) {
|
/**
|
||||||
i.esq = inserir(x, i.esq);
|
* Metodo publico para inserir elemento.
|
||||||
|
* @param x Elemento a ser inserido.
|
||||||
|
* @throws Exception Se o elemento existir.
|
||||||
|
*/
|
||||||
|
public void inserirPai(int x) throws Exception {
|
||||||
|
if(raiz == null){
|
||||||
|
raiz = new No(x);
|
||||||
|
} else if(x < raiz.elemento){
|
||||||
|
inserirPai(x, raiz.esq, raiz);
|
||||||
|
} else if(x > raiz.elemento){
|
||||||
|
inserirPai(x, raiz.dir, raiz);
|
||||||
|
} else {
|
||||||
|
throw new Exception("Erro ao inserirPai!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} else if (x > i.elemento) {
|
/**
|
||||||
i.dir = inserir(x, i.dir);
|
* Metodo privado recursivo para inserirPai elemento.
|
||||||
|
* @param x Elemento a ser inserido.
|
||||||
} else {
|
* @param i No em analise.
|
||||||
throw new Exception("Erro ao inserir!");
|
* @param pai No superior ao em analise.
|
||||||
}
|
* @throws Exception Se o elemento existir.
|
||||||
|
*/
|
||||||
return i;
|
private void inserirPai(int x, No i, No pai) throws Exception {
|
||||||
}
|
if (i == null) {
|
||||||
|
if(x < pai.elemento){
|
||||||
/**
|
pai.esq = new No(x);
|
||||||
* Metodo publico para inserir elemento.
|
} else {
|
||||||
* @param x Elemento a ser inserido.
|
pai.dir = new No(x);
|
||||||
* @throws Exception Se o elemento existir.
|
}
|
||||||
*/
|
} else if (x < i.elemento) {
|
||||||
public void inserirPai(int x) throws Exception {
|
inserirPai(x, i.esq, i);
|
||||||
if(raiz == null){
|
} else if (x > i.elemento) {
|
||||||
raiz = new No(x);
|
inserirPai(x, i.dir, i);
|
||||||
} else if(x < raiz.elemento){
|
} else {
|
||||||
inserirPai(x, raiz.esq, raiz);
|
throw new Exception("Erro ao inserirPai!");
|
||||||
} else if(x > raiz.elemento){
|
}
|
||||||
inserirPai(x, raiz.dir, raiz);
|
}
|
||||||
} else {
|
|
||||||
throw new Exception("Erro ao inserirPai!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Metodo privado recursivo para inserirPai elemento.
|
|
||||||
* @param x Elemento a ser inserido.
|
|
||||||
* @param i No em analise.
|
|
||||||
* @param pai No superior ao em analise.
|
|
||||||
* @throws Exception Se o elemento existir.
|
|
||||||
*/
|
|
||||||
private void inserirPai(int x, No i, No pai) throws Exception {
|
|
||||||
if (i == null) {
|
|
||||||
if(x < i.elemento){
|
|
||||||
pai.esq = new No(x);
|
|
||||||
} else {
|
|
||||||
pai.dir = new No(x);
|
|
||||||
}
|
|
||||||
} else if (x < i.elemento) {
|
|
||||||
inserirPai(x, i.esq, i);
|
|
||||||
} else if (x > i.elemento) {
|
|
||||||
inserirPai(x, i.dir, i);
|
|
||||||
} else {
|
|
||||||
throw new Exception("Erro ao inserirPai!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo publico iterativo para remover elemento.
|
* Metodo publico iterativo para remover elemento.
|
||||||
* @param x Elemento a ser removido.
|
* @param x Elemento a ser removido.
|
||||||
* @throws Exception Se nao encontrar elemento.
|
* @throws Exception Se nao encontrar elemento.
|
||||||
*/
|
*/
|
||||||
public void remover(int x) throws Exception {
|
public void remover(int x) throws Exception {
|
||||||
raiz = remover(x, raiz);
|
raiz = remover(x, raiz);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo privado recursivo para remover elemento.
|
* Metodo privado recursivo para remover elemento.
|
||||||
* @param x Elemento a ser removido.
|
* @param x Elemento a ser removido.
|
||||||
* @param i No em analise.
|
* @param i No em analise.
|
||||||
* @return No em analise, alterado ou nao.
|
* @return No em analise, alterado ou nao.
|
||||||
* @throws Exception Se nao encontrar elemento.
|
* @throws Exception Se nao encontrar elemento.
|
||||||
*/
|
*/
|
||||||
private No remover(int x, No i) throws Exception {
|
private No remover(int x, No i) throws Exception {
|
||||||
|
|
||||||
if (i == null) {
|
if (i == null) {
|
||||||
throw new Exception("Erro ao remover!");
|
throw new Exception("Erro ao remover!");
|
||||||
|
|
||||||
} else if (x < i.elemento) {
|
} else if (x < i.elemento) {
|
||||||
i.esq = remover(x, i.esq);
|
i.esq = remover(x, i.esq);
|
||||||
|
|
||||||
} else if (x > i.elemento) {
|
} else if (x > i.elemento) {
|
||||||
i.dir = remover(x, i.dir);
|
i.dir = remover(x, i.dir);
|
||||||
|
|
||||||
// Sem no a direita.
|
// Sem no a direita.
|
||||||
} else if (i.dir == null) {
|
} else if (i.dir == null) {
|
||||||
i = i.esq;
|
i = i.esq;
|
||||||
|
|
||||||
// Sem no a esquerda.
|
// Sem no a esquerda.
|
||||||
} else if (i.esq == null) {
|
} else if (i.esq == null) {
|
||||||
i = i.dir;
|
i = i.dir;
|
||||||
|
|
||||||
// No a esquerda e no a direita.
|
// No a esquerda e no a direita.
|
||||||
} else {
|
} else {
|
||||||
i.esq = maiorEsq(i, i.esq);
|
i.esq = maiorEsq(i, i.esq);
|
||||||
}
|
}
|
||||||
|
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo para trocar o elemento "removido" pelo maior da esquerda.
|
* Metodo para trocar o elemento "removido" pelo maior da esquerda.
|
||||||
* @param i No que teve o elemento removido.
|
* @param i No que teve o elemento removido.
|
||||||
* @param j No da subarvore esquerda.
|
* @param j No da subarvore esquerda.
|
||||||
* @return No em analise, alterado ou nao.
|
* @return No em analise, alterado ou nao.
|
||||||
*/
|
*/
|
||||||
private No maiorEsq(No i, No j) {
|
private No maiorEsq(No i, No j) {
|
||||||
|
|
||||||
// Encontrou o maximo da subarvore esquerda.
|
// Encontrou o maximo da subarvore esquerda.
|
||||||
if (j.dir == null) {
|
if (j.dir == null) {
|
||||||
i.elemento = j.elemento; // Substitui i por j.
|
i.elemento = j.elemento; // Substitui i por j.
|
||||||
j = j.esq; // Substitui j por j.ESQ.
|
j = j.esq; // Substitui j por j.ESQ.
|
||||||
|
|
||||||
// Existe no a direita.
|
// Existe no a direita.
|
||||||
} else {
|
} else {
|
||||||
// Caminha para direita.
|
// Caminha para direita.
|
||||||
j.dir = maiorEsq(i, j.dir);
|
j.dir = maiorEsq(i, j.dir);
|
||||||
}
|
}
|
||||||
return j;
|
return j;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo que retorna o maior elemento da árvore
|
* Metodo que retorna o maior elemento da árvore
|
||||||
* @return int maior elemento da árvore
|
* @return int maior elemento da árvore
|
||||||
*/
|
*/
|
||||||
public int getMaior(){
|
public int getMaior(){
|
||||||
int resp = -1;
|
int resp = -1;
|
||||||
|
if(raiz != null){
|
||||||
if(raiz != null){
|
No i;
|
||||||
No i;
|
for(i = raiz; i.dir != null; i = i.dir);
|
||||||
for(i = raiz; i.dir != null; i = i.dir);
|
resp = i.elemento;
|
||||||
resp = i.elemento;
|
}
|
||||||
}
|
return resp;
|
||||||
|
}
|
||||||
return resp;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo que retorna o menor elemento da árvore
|
* Metodo que retorna o menor elemento da árvore
|
||||||
* @return int menor elemento da árvore
|
* @return int menor elemento da árvore
|
||||||
*/
|
*/
|
||||||
public int getMenor(){
|
public int getMenor(){
|
||||||
int resp = -1;
|
int resp = -1;
|
||||||
|
if(raiz != null){
|
||||||
if(raiz != null){
|
No i;
|
||||||
No i;
|
for(i = raiz; i.esq != null; i = i.esq);
|
||||||
for(i = raiz; i.esq != null; i = i.esq);
|
resp = i.elemento;
|
||||||
resp = i.elemento;
|
}
|
||||||
}
|
return resp;
|
||||||
|
}
|
||||||
return resp;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo que retorna a altura da árvore
|
* Metodo que retorna a altura da árvore
|
||||||
* @return int altura da árvore
|
* @return int altura da árvore
|
||||||
*/
|
*/
|
||||||
public int getAltura(){
|
public int getAltura(){
|
||||||
return getAltura(raiz, 0);
|
return getAltura(raiz, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Metodo que retorna a altura da árvore
|
||||||
|
* @return int altura da árvore
|
||||||
|
*/
|
||||||
|
public int getAltura(No i, int altura){
|
||||||
|
if(i == null){
|
||||||
|
altura--;
|
||||||
|
} else {
|
||||||
|
int alturaEsq = getAltura(i.esq, altura + 1);
|
||||||
|
int alturaDir = getAltura(i.dir, altura + 1);
|
||||||
|
altura = (alturaEsq > alturaDir) ? alturaEsq : alturaDir;
|
||||||
|
}
|
||||||
|
return altura;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metodo que retorna a altura da árvore
|
* Metodo publico iterativo para remover elemento.
|
||||||
* @return int altura da árvore
|
* @param x Elemento a ser removido.
|
||||||
*/
|
* @throws Exception Se nao encontrar elemento.
|
||||||
public int getAltura(No i, int altura){
|
*/
|
||||||
if(i == null){
|
public void remover2(int x) throws Exception {
|
||||||
altura--;
|
if (raiz == null) {
|
||||||
} else {
|
throw new Exception("Erro ao remover2!");
|
||||||
int alturaEsq = getAltura(i.esq, altura + 1);
|
} else if(x < raiz.elemento){
|
||||||
int alturaDir = getAltura(i.dir, altura + 1);
|
remover2(x, raiz.esq, raiz);
|
||||||
altura = (alturaEsq > alturaDir) ? alturaEsq : alturaDir;
|
} else if (x > raiz.elemento){
|
||||||
}
|
remover2(x, raiz.dir, raiz);
|
||||||
return altura;
|
} else if (raiz.dir == null) {
|
||||||
}
|
raiz = raiz.esq;
|
||||||
|
} else if (raiz.esq == null) {
|
||||||
|
raiz = raiz.dir;
|
||||||
|
} else {
|
||||||
|
raiz.esq = maiorEsq(raiz, raiz.esq);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Metodo privado recursivo para remover elemento.
|
||||||
|
* @param x Elemento a ser removido.
|
||||||
|
* @param i No em analise.
|
||||||
|
* @param pai do No em analise.
|
||||||
|
* @throws Exception Se nao encontrar elemento.
|
||||||
|
*/
|
||||||
|
private void remover2(int x, No i, No pai) throws Exception {
|
||||||
|
if (i == null) {
|
||||||
|
throw new Exception("Erro ao remover2!");
|
||||||
|
} else if (x < i.elemento) {
|
||||||
|
remover2(x, i.esq, i);
|
||||||
|
} else if (x > i.elemento) {
|
||||||
|
remover2(x, i.dir, i);
|
||||||
|
} else if (i.dir == null) {
|
||||||
|
pai = i.esq;
|
||||||
|
} else if (i.esq == null) {
|
||||||
|
pai = i.dir;
|
||||||
|
} else {
|
||||||
|
i.esq = maiorEsq(i, i.esq);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
public int getRaiz() throws Exception {
|
||||||
* Metodo publico iterativo para remover elemento.
|
return raiz.elemento;
|
||||||
* @param x Elemento a ser removido.
|
}
|
||||||
* @throws Exception Se nao encontrar elemento.
|
|
||||||
*/
|
|
||||||
public void remover2(int x) throws Exception {
|
|
||||||
if (raiz == null) {
|
|
||||||
throw new Exception("Erro ao remover2!");
|
|
||||||
} else if(x < raiz.elemento){
|
|
||||||
remover2(x, raiz.esq, raiz);
|
|
||||||
} else if (x > raiz.elemento){
|
|
||||||
remover2(x, raiz.dir, raiz);
|
|
||||||
} else if (raiz.dir == null) {
|
|
||||||
raiz = raiz.esq;
|
|
||||||
} else if (raiz.esq == null) {
|
|
||||||
raiz = raiz.dir;
|
|
||||||
} else {
|
|
||||||
raiz.esq = maiorEsq(raiz, raiz.esq);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
public static boolean igual (ArvoreBinaria a1, ArvoreBinaria a2){
|
||||||
* Metodo privado recursivo para remover elemento.
|
return igual(a1.raiz, a2.raiz);
|
||||||
* @param x Elemento a ser removido.
|
}
|
||||||
* @param i No em analise.
|
|
||||||
* @param pai do No em analise.
|
|
||||||
* @throws Exception Se nao encontrar elemento.
|
|
||||||
*/
|
|
||||||
private void remover2(int x, No i, No pai) throws Exception {
|
|
||||||
if (i == null) {
|
|
||||||
throw new Exception("Erro ao remover2!");
|
|
||||||
} else if (x < i.elemento) {
|
|
||||||
remover2(x, i.esq, i);
|
|
||||||
} else if (x > i.elemento) {
|
|
||||||
remover2(x, i.dir, i);
|
|
||||||
} else if (i.dir == null) {
|
|
||||||
pai = i.esq;
|
|
||||||
} else if (i.esq == null) {
|
|
||||||
pai = i.dir;
|
|
||||||
} else {
|
|
||||||
i.esq = maiorEsq(i, i.esq);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getRaiz() throws Exception {
|
private static boolean igual (No i1, No i2){
|
||||||
return raiz.elemento;
|
boolean resp;
|
||||||
}
|
if(i1 != null && i2 != null){
|
||||||
|
resp = (i1.elemento == i2.elemento) && igual(i1.esq, i2.esq) && igual(i1.dir, i2.dir);
|
||||||
|
} else if(i1 == null && i2 == null){
|
||||||
|
resp = true;
|
||||||
|
} else {
|
||||||
|
resp = false;
|
||||||
|
}
|
||||||
|
return resp;
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean igual (ArvoreBinaria a1, ArvoreBinaria a2){
|
public int soma(){
|
||||||
return igual(a1.raiz, a2.raiz);
|
return soma(raiz);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean igual (No i1, No i2){
|
public int soma(No i){
|
||||||
boolean resp;
|
int resp = 0;
|
||||||
if(i1 != null && i2 != null){
|
if(i != null){
|
||||||
resp = (i1.elemento == i2.elemento) && igual(i1.esq, i2.esq) && igual(i1.dir, i2.dir);
|
resp = i.elemento;
|
||||||
} else if(i1 == null && i2 == null){
|
resp += soma(i.esq);
|
||||||
resp = true;
|
resp += soma(i.dir);
|
||||||
} else {
|
}
|
||||||
resp = false;
|
return resp;
|
||||||
}
|
}
|
||||||
return resp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int soma(){
|
public int quantidadePares(){
|
||||||
return soma(raiz);
|
return quantidadePares(raiz);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int soma(No i){
|
public int quantidadePares(No i){
|
||||||
int resp = 0;
|
int resp = 0;
|
||||||
if(i != null){
|
if(i != null){
|
||||||
resp = i.elemento + soma(i.esq) + soma(i.dir);
|
resp = ((i.elemento % 2 == 0) ? 1 : 0);
|
||||||
}
|
resp += quantidadePares(i.esq);
|
||||||
return resp;
|
resp += quantidadePares(i.dir);
|
||||||
}
|
}
|
||||||
|
return resp;
|
||||||
|
}
|
||||||
|
|
||||||
public int quantidadePares(){
|
public boolean hasDiv11(){
|
||||||
return quantidadePares(raiz);
|
return hasDiv11(raiz);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int quantidadePares(No i){
|
public boolean hasDiv11(No i){
|
||||||
int resp = 0;
|
boolean resp = false;
|
||||||
if(i != null){
|
if(i != null){
|
||||||
resp = ((i.elemento % 2 == 0) ? 1 : 0) + quantidadePares(i.esq) + quantidadePares(i.dir);
|
resp = (i.elemento % 11 == 0) || hasDiv11(i.esq) || hasDiv11(i.dir);
|
||||||
}
|
}
|
||||||
return resp;
|
return resp;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasDiv11(){
|
|
||||||
return hasDiv11(raiz);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasDiv11(No i){
|
|
||||||
boolean resp = false;
|
|
||||||
if(i != null){
|
|
||||||
resp = (i.elemento % 11 == 0) || hasDiv11(i.esq) || hasDiv11(i.dir);
|
|
||||||
}
|
|
||||||
return resp;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,31 @@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* No da arvore binaria
|
* No da arvore binaria
|
||||||
* @author Max do Val Machado
|
* @author Max do Val Machado
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class No {
|
class No {
|
||||||
public int elemento; // Conteudo do no.
|
public int elemento; // Conteudo do no.
|
||||||
public No esq, dir; // Filhos da esq e dir.
|
public No esq, dir; // Filhos da esq e dir.
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construtor da classe.
|
* Construtor da classe.
|
||||||
* @param elemento Conteudo do no.
|
* @param elemento Conteudo do no.
|
||||||
*/
|
*/
|
||||||
public No(int elemento) {
|
public No(int elemento) {
|
||||||
this(elemento, null, null);
|
this(elemento, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construtor da classe.
|
* Construtor da classe.
|
||||||
* @param elemento Conteudo do no.
|
* @param elemento Conteudo do no.
|
||||||
* @param esq No da esquerda.
|
* @param esq No da esquerda.
|
||||||
* @param dir No da direita.
|
* @param dir No da direita.
|
||||||
*/
|
*/
|
||||||
public No(int elemento, No esq, No dir) {
|
public No(int elemento, No esq, No dir) {
|
||||||
this.elemento = elemento;
|
this.elemento = elemento;
|
||||||
this.esq = esq;
|
this.esq = esq;
|
||||||
this.dir = dir;
|
this.dir = dir;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,32 +3,13 @@
|
||||||
* @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 {
|
||||||
ArvoreBinaria arvoreBinaria = new ArvoreBinaria();
|
ArvoreBinaria arvoreBinaria = new ArvoreBinaria();
|
||||||
|
for(int i=1; i<30; i++){
|
||||||
arvoreBinaria.inserir(3);
|
arvoreBinaria.inserir(i);
|
||||||
arvoreBinaria.inserir(5);
|
System.out.print("No. nos: " + i);
|
||||||
arvoreBinaria.inserir(1);
|
System.out.print("\t Altura: " + arvoreBinaria.getAltura());
|
||||||
arvoreBinaria.inserir(8);
|
System.out.println("\t log(2): " + Math.log(i)/Math.log(2));
|
||||||
arvoreBinaria.inserir(2);
|
}
|
||||||
arvoreBinaria.inserir(4);
|
}
|
||||||
arvoreBinaria.inserir(7);
|
|
||||||
arvoreBinaria.inserir(6);
|
|
||||||
|
|
||||||
System.out.println("Altura: " + arvoreBinaria.getAltura());
|
|
||||||
System.out.println("Menor valor: " + arvoreBinaria.getMenor());
|
|
||||||
System.out.println("Maior valor: " + arvoreBinaria.getMaior());
|
|
||||||
|
|
||||||
arvoreBinaria.caminharCentral();
|
|
||||||
arvoreBinaria.caminharPre();
|
|
||||||
arvoreBinaria.caminharPos();
|
|
||||||
|
|
||||||
arvoreBinaria.remover(6);
|
|
||||||
arvoreBinaria.remover(2);
|
|
||||||
arvoreBinaria.remover(4);
|
|
||||||
|
|
||||||
arvoreBinaria.caminharCentral();
|
|
||||||
arvoreBinaria.caminharPre();
|
|
||||||
arvoreBinaria.caminharPos();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,24 +5,24 @@
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
public class Principal2 {
|
public class Principal2 {
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
ArvoreBinaria a = new ArvoreBinaria();
|
ArvoreBinaria a = new ArvoreBinaria();
|
||||||
|
|
||||||
Random gerador = new Random();
|
Random gerador = new Random();
|
||||||
gerador.setSeed(0);
|
gerador.setSeed(0);
|
||||||
for(int i = 1; i <= 100000; i++){
|
for(int i = 1; i <= 100000; i++){
|
||||||
int valor;
|
int valor;
|
||||||
do {
|
do {
|
||||||
valor = Math.abs(gerador.nextInt());
|
valor = Math.abs(gerador.nextInt());
|
||||||
} while (a.pesquisar(valor) == true);
|
} while (a.pesquisar(valor) == true);
|
||||||
|
|
||||||
a.inserir(valor);
|
a.inserir(valor);
|
||||||
|
|
||||||
if(i % 1000 == 0){
|
if(i % 1000 == 0){
|
||||||
double log2 = (Math.log(i) / Math.log(2));
|
double log2 = (Math.log(i) / Math.log(2));
|
||||||
log2 *= 1.39;
|
log2 *= 1.39;
|
||||||
System.out.println("Número de nós = " + i + " --- log(i,2) = " + log2 + " --- h = " + a.getAltura());
|
System.out.println("Número de nós = " + i + " --- log(i,2) = " + log2 + " --- h = " + a.getAltura());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue