diff --git a/fonte/u06 Estruturas de dados básicas flexíveis/c/coletalixo/coletalixo.c b/fonte/u06 Estruturas de dados básicas flexíveis/c/coletalixo/coletalixo.c index a89cbfa..4acc597 100644 --- a/fonte/u06 Estruturas de dados básicas flexíveis/c/coletalixo/coletalixo.c +++ b/fonte/u06 Estruturas de dados básicas flexíveis/c/coletalixo/coletalixo.c @@ -8,31 +8,31 @@ typedef struct Celula { } Celula; Celula* novaCelula(int elemento) { - Celula* nova = (Celula*) malloc(sizeof(Celula)); - nova->elemento = elemento; - nova->prox = NULL; - return nova; + Celula* nova = (Celula*) malloc(sizeof(Celula)); + nova->elemento = elemento; + nova->prox = NULL; + return nova; } Celula* primeiro; void start () { - primeiro = novaCelula(-1); + primeiro = novaCelula(-1); } void inserir(int x) { - primeiro->prox = novaCelula(x); - Celula* tmp = primeiro; - primeiro = primeiro->prox; - free(tmp); + primeiro->prox = novaCelula(x); + Celula* tmp = primeiro; + primeiro = primeiro->prox; + free(tmp); } int main(int argc, char** argv) { - start(); - while(true){ - inserir(0); - } - return 0; + start(); + while(true){ + inserir(0); + } + return 0; } diff --git a/fonte/u06 Estruturas de dados básicas flexíveis/c/coletalixo/xx b/fonte/u06 Estruturas de dados básicas flexíveis/c/coletalixo/xx deleted file mode 100755 index d428586..0000000 Binary files a/fonte/u06 Estruturas de dados básicas flexíveis/c/coletalixo/xx and /dev/null differ diff --git a/fonte/u06 Estruturas de dados básicas flexíveis/java/TADs Nativos em Java/FilaNativa.java b/fonte/u06 Estruturas de dados básicas flexíveis/java/TADs Nativos em Java/FilaNativa.java index 9a04885..67d305f 100644 --- a/fonte/u06 Estruturas de dados básicas flexíveis/java/TADs Nativos em Java/FilaNativa.java +++ b/fonte/u06 Estruturas de dados básicas flexíveis/java/TADs Nativos em Java/FilaNativa.java @@ -8,7 +8,7 @@ public class FilaNativa { fila.add("Cruzeiro"); fila.add("América"); - while (fila.isEmpty() == false){ + while (!fila.isEmpty()){ System.out.println("Retirando da fila: " + fila.remove()); } } diff --git a/fonte/u06 Estruturas de dados básicas flexíveis/java/TADs Nativos em Java/ListaNativa.java b/fonte/u06 Estruturas de dados básicas flexíveis/java/TADs Nativos em Java/ListaNativa.java index ec73fc1..5aeed72 100644 --- a/fonte/u06 Estruturas de dados básicas flexíveis/java/TADs Nativos em Java/ListaNativa.java +++ b/fonte/u06 Estruturas de dados básicas flexíveis/java/TADs Nativos em Java/ListaNativa.java @@ -33,3 +33,4 @@ class ListaNativa { } } } + diff --git a/fonte/u06 Estruturas de dados básicas flexíveis/java/coletalixo/Celula.java b/fonte/u06 Estruturas de dados básicas flexíveis/java/coletalixo/Celula.java index 866b654..19a6462 100644 --- a/fonte/u06 Estruturas de dados básicas flexíveis/java/coletalixo/Celula.java +++ b/fonte/u06 Estruturas de dados básicas flexíveis/java/coletalixo/Celula.java @@ -4,23 +4,23 @@ * @version 2 01/2015 */ class Celula { - public int elemento; // Elemento inserido na celula. - public Celula prox; // Aponta a celula prox. + public int elemento; // Elemento inserido na celula. + public Celula prox; // Aponta a celula prox. - /** - * Construtor da classe. - */ - public Celula() { - this(0); - } + /** + * Construtor da classe. + */ + public Celula() { + this(0); + } - /** - * Construtor da classe. - * @param elemento int inserido na celula. - */ - public Celula(int elemento) { - this.elemento = elemento; - this.prox = null; - } + /** + * Construtor da classe. + * @param elemento int inserido na celula. + */ + public Celula(int elemento) { + this.elemento = elemento; + this.prox = null; + } } diff --git a/fonte/u06 Estruturas de dados básicas flexíveis/java/coletalixo/ColetaLixo.java b/fonte/u06 Estruturas de dados básicas flexíveis/java/coletalixo/ColetaLixo.java index 1e63a54..902bbcc 100644 --- a/fonte/u06 Estruturas de dados básicas flexíveis/java/coletalixo/ColetaLixo.java +++ b/fonte/u06 Estruturas de dados básicas flexíveis/java/coletalixo/ColetaLixo.java @@ -1,24 +1,23 @@ class ColetaLixo { - private Celula primeiro; + private Celula primeiro; - public ColetaLixo () { - primeiro = new Celula(); - } + public ColetaLixo () { + primeiro = new Celula(); + } - public void inserir(int x) { - primeiro.prox = new Celula(x); - primeiro = primeiro.prox; - } + public void inserir(int x) { + primeiro.prox = new Celula(x); + primeiro = primeiro.prox; + } - public static void main (String [] args) { - ColetaLixo coletaLixo = new ColetaLixo (); - - while(true){ - coletaLixo.inserir(0); - } - } + public static void main (String [] args) { + ColetaLixo coletaLixo = new ColetaLixo (); + while(true){ + coletaLixo.inserir(0); + } + } } diff --git a/fonte/u07 Árvores binárias/arvoreBinaria/c/arvorebinaria.c b/fonte/u07 Árvores binárias/arvoreBinaria/c/arvorebinaria.c index 832f809..b3b2e42 100644 --- a/fonte/u07 Árvores binárias/arvoreBinaria/c/arvorebinaria.c +++ b/fonte/u07 Árvores binárias/arvoreBinaria/c/arvorebinaria.c @@ -198,3 +198,6 @@ void maiorEsq(No** i, No** j) { free(del); } } + + + diff --git a/fonte/u07 Árvores binárias/arvoreBinaria/c/makefile b/fonte/u07 Árvores binárias/arvoreBinaria/c/makefile index f33f538..4a4b21c 100644 --- a/fonte/u07 Árvores binárias/arvoreBinaria/c/makefile +++ b/fonte/u07 Árvores binárias/arvoreBinaria/c/makefile @@ -1,5 +1,5 @@ all: exec - + exec: principal.o arvorebinaria.o no.o gcc -o exec principal.o arvorebinaria.o no.o diff --git a/fonte/u07 Árvores binárias/arvoreBinaria/c/principal.c b/fonte/u07 Árvores binárias/arvoreBinaria/c/principal.c index 3076040..5e5ba39 100644 --- a/fonte/u07 Árvores binárias/arvoreBinaria/c/principal.c +++ b/fonte/u07 Árvores binárias/arvoreBinaria/c/principal.c @@ -55,6 +55,5 @@ int main(){ caminharPre(); caminharPos(); - return 1; } diff --git a/fonte/u07 Árvores binárias/arvoreBinaria/cc/arvorebinaria.cc b/fonte/u07 Árvores binárias/arvoreBinaria/cc/arvorebinaria.cc index 518de40..80978db 100644 --- a/fonte/u07 Árvores binárias/arvoreBinaria/cc/arvorebinaria.cc +++ b/fonte/u07 Árvores binárias/arvoreBinaria/cc/arvorebinaria.cc @@ -10,7 +10,7 @@ * Construtor da classe. */ ArvoreBinaria::ArvoreBinaria() { - raiz = NULL; + raiz = NULL; } /** @@ -20,7 +20,7 @@ ArvoreBinaria::ArvoreBinaria() { * false em caso contrario. */ bool ArvoreBinaria::pesquisar(int x) { - return pesquisar(x, raiz); + return pesquisar(x, raiz); } /** @@ -31,29 +31,29 @@ bool ArvoreBinaria::pesquisar(int x) { * false em caso contrario. */ bool ArvoreBinaria::pesquisar(int x, No* i) { - bool resp; - if (i == NULL) { - resp = false; + bool resp; + if (i == NULL) { + resp = false; - } else if (x == i->elemento) { - resp = true; + } else if (x == i->elemento) { + resp = true; - } else if (x < i->elemento) { - resp = pesquisar(x, i->esq); + } else if (x < i->elemento) { + resp = pesquisar(x, i->esq); - } else { - resp = pesquisar(x, i->dir); - } - return resp; + } else { + resp = pesquisar(x, i->dir); + } + return resp; } /** * Metodo publico iterativo para exibir elementos. */ void ArvoreBinaria::caminharCentral() { - cout << "[ "; - caminharCentral(raiz); - cout << "]\n"; + cout << "[ "; + caminharCentral(raiz); + cout << "]\n"; } /** @@ -61,20 +61,20 @@ void ArvoreBinaria::caminharCentral() { * @param i No em analise. */ void ArvoreBinaria::caminharCentral(No* i) { - if (i != NULL) { - caminharCentral(i->esq); // Elementos da esquerda. - cout << i->elemento << " "; // Conteudo do no. - caminharCentral(i->dir); // Elementos da direita. - } + if (i != NULL) { + caminharCentral(i->esq); // Elementos da esquerda. + cout << i->elemento << " "; // Conteudo do no. + caminharCentral(i->dir); // Elementos da direita. + } } /** * Metodo publico iterativo para exibir elementos. */ void ArvoreBinaria::caminharPre() { - cout << "[ "; - caminharPre(raiz); - cout << "]\n"; + cout << "[ "; + caminharPre(raiz); + cout << "]\n"; } /** @@ -82,20 +82,20 @@ void ArvoreBinaria::caminharPre() { * @param i No em analise. */ void ArvoreBinaria::caminharPre(No* i) { - if (i != NULL) { - cout << i->elemento << " "; // Conteudo do no. - caminharPre(i->esq); // Elementos da esquerda. - caminharPre(i->dir); // Elementos da direita. - } + if (i != NULL) { + cout << i->elemento << " "; // Conteudo do no. + caminharPre(i->esq); // Elementos da esquerda. + caminharPre(i->dir); // Elementos da direita. + } } /** * Metodo publico iterativo para exibir elementos. */ void ArvoreBinaria::caminharPos() { - cout << "[ "; - caminharPos(raiz); - cout << "]\n"; + cout << "[ "; + caminharPos(raiz); + cout << "]\n"; } /** @@ -103,11 +103,11 @@ void ArvoreBinaria::caminharPos() { * @param i No em analise. */ void ArvoreBinaria::caminharPos(No* i) { - if (i != NULL) { - caminharPos(i->esq); // Elementos da esquerda. - caminharPos(i->dir); // Elementos da direita. - cout << i->elemento << " "; // Conteudo do no. - } + if (i != NULL) { + caminharPos(i->esq); // Elementos da esquerda. + caminharPos(i->dir); // Elementos da direita. + cout << i->elemento << " "; // Conteudo do no. + } } /** @@ -115,7 +115,7 @@ void ArvoreBinaria::caminharPos(No* i) { * @param x Elemento a ser inserido. */ 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. */ void ArvoreBinaria::inserir(int x, No* &i) { - if (i == NULL) { - i = new No(x); + if (i == NULL) { + i = new No(x); - } else if (x < i->elemento) { - inserir(x, i->esq); + } else if (x < i->elemento) { + inserir(x, i->esq); - } else if (x > i->elemento) { - inserir(x, i->dir); + } else if (x > i->elemento) { + inserir(x, i->dir); - } else { - errx(1, "Erro ao inserir!"); - } + } else { + errx(1, "Erro ao inserir!"); + } } - /** - * Metodo publico iterativo para remover elemento. - * @param x Elemento a ser removido. +/** + * Metodo publico iterativo para remover elemento. + * @param x Elemento a ser removido. */ 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. */ void ArvoreBinaria::remover(int x, No* &i) { - if (i == NULL) { - errx(1, "Erro ao remover!"); + if (i == NULL) { + errx(1, "Erro ao remover!"); - } else if (x < i->elemento) { - remover(x, i->esq); + } else if (x < i->elemento) { + remover(x, i->esq); - } else if (x > i->elemento) { - remover(x, i->dir); + } else if (x > i->elemento) { + remover(x, i->dir); - // Sem no a direita. - } else if (i->dir == NULL) { - No* del = i; - i = i->esq; - delete del; + // Sem no a direita. + } else if (i->dir == NULL) { + No* del = i; + i = i->esq; + delete del; - // Sem no a esquerda. - } else if (i->esq == NULL) { - No* del = i; - i = i->dir; - delete del; + // Sem no a esquerda. + } else if (i->esq == NULL) { + No* del = i; + i = i->dir; + delete del; - // No a esquerda e no a direita. - } else { - maiorEsq(i, i->esq); - } + // No a esquerda e no a direita. + } else { + maiorEsq(i, i->esq); + } } @@ -186,15 +186,15 @@ void ArvoreBinaria::remover(int x, No* &i) { * @param j No da subarvore esquerda. */ void ArvoreBinaria::maiorEsq(No* i, No* &j) { - // Encontrou o maximo da subarvore esquerda. - if (j->dir == NULL) { - No* del = j; - i->elemento = j->elemento; // Substitui i por j. - j = j->esq; // Substitui j por j.ESQ. - delete del; + // Encontrou o maximo da subarvore esquerda. + if (j->dir == NULL) { + No* del = j; + i->elemento = j->elemento; // Substitui i por j. + j = j->esq; // Substitui j por j.ESQ. + delete del; - // Existe no a direita. - } else { - maiorEsq(i, j->dir); // Caminha para direita. - } + // Existe no a direita. + } else { + maiorEsq(i, j->dir); // Caminha para direita. + } } diff --git a/fonte/u07 Árvores binárias/arvoreBinaria/cc/arvorebinaria.h b/fonte/u07 Árvores binárias/arvoreBinaria/cc/arvorebinaria.h index bedb393..bf50f95 100644 --- a/fonte/u07 Árvores binárias/arvoreBinaria/cc/arvorebinaria.h +++ b/fonte/u07 Árvores binárias/arvoreBinaria/cc/arvorebinaria.h @@ -6,22 +6,22 @@ #include "no.h" class ArvoreBinaria { - private: - No* raiz; // Raiz da arvore. - bool pesquisar(int, No*); - void caminharCentral(No*); - void caminharPre(No*); - void caminharPos(No*); - void inserir(int, No* &); - void remover(int, No* &); - void antecessor(No*, No* &); + private: + No* raiz; // Raiz da arvore. + bool pesquisar(int, No*); + void caminharCentral(No*); + void caminharPre(No*); + void caminharPos(No*); + void inserir(int, No* &); + void remover(int, No* &); + void maiorEsq(No*, No* &); - public: - ArvoreBinaria(); - bool pesquisar(int); - void caminharCentral(); - void caminharPre(); - void caminharPos(); - void inserir(int); - void remover(int); + public: + ArvoreBinaria(); + bool pesquisar(int); + void caminharCentral(); + void caminharPre(); + void caminharPos(); + void inserir(int); + void remover(int); }; diff --git a/fonte/u07 Árvores binárias/arvoreBinaria/cc/no.h b/fonte/u07 Árvores binárias/arvoreBinaria/cc/no.h index e080e9c..31eada6 100644 --- a/fonte/u07 Árvores binárias/arvoreBinaria/cc/no.h +++ b/fonte/u07 Árvores binárias/arvoreBinaria/cc/no.h @@ -7,8 +7,8 @@ using namespace std; class No { - public: - int elemento; // Conteudo do no. - No *esq, *dir; // Filhos da esq e dir. - No(int); + public: + int elemento; // Conteudo do no. + No *esq, *dir; // Filhos da esq e dir. + No(int); }; diff --git a/fonte/u07 Árvores binárias/arvoreBinaria/java/ArvoreBinaria.java b/fonte/u07 Árvores binárias/arvoreBinaria/java/ArvoreBinaria.java index 01fff46..f54248e 100644 --- a/fonte/u07 Árvores binárias/arvoreBinaria/java/ArvoreBinaria.java +++ b/fonte/u07 Árvores binárias/arvoreBinaria/java/ArvoreBinaria.java @@ -3,407 +3,400 @@ * @author Max do Val Machado */ public class ArvoreBinaria { - private No raiz; // Raiz da arvore. + private No raiz; // Raiz da arvore. - /** - * Construtor da classe. - */ - public ArvoreBinaria() { - raiz = null; - } + /** + * Construtor da classe. + */ + public ArvoreBinaria() { + raiz = null; + } - /** - * Metodo publico iterativo para pesquisar elemento. - * @param x Elemento que sera procurado. - * @return true se o elemento existir, - * false em caso contrario. - */ - public boolean pesquisar(int x) { - return pesquisar(x, raiz); - } + /** + * Metodo publico iterativo para pesquisar elemento. + * @param x Elemento que sera procurado. + * @return true se o elemento existir, + * false em caso contrario. + */ + public boolean pesquisar(int x) { + return pesquisar(x, raiz); + } - /** - * Metodo privado recursivo para pesquisar elemento. - * @param x Elemento que sera procurado. - * @param i No em analise. - * @return true se o elemento existir, - * false em caso contrario. - */ - private boolean pesquisar(int x, No i) { - boolean resp; - if (i == null) { - resp = false; + /** + * Metodo privado recursivo para pesquisar elemento. + * @param x Elemento que sera procurado. + * @param i No em analise. + * @return true se o elemento existir, + * false em caso contrario. + */ + private boolean pesquisar(int x, No i) { + boolean resp; + if (i == null) { + 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); - } - return resp; - } + /** + * Metodo publico iterativo para exibir elementos. + */ + public void caminharPre() { + System.out.print("[ "); + caminharPre(raiz); + System.out.println("]"); + } - /** - * Metodo publico iterativo para exibir elementos. - */ - public void caminharCentral() { - System.out.print("[ "); - caminharCentral(raiz); - System.out.println("]"); - } + /** + * 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 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. - } - } + /** + * Metodo publico iterativo para exibir elementos. + */ + public void caminharPos() { + System.out.print("[ "); + caminharPos(raiz); + System.out.println("]"); + } - /** - * Metodo publico iterativo para exibir elementos. - */ - public void caminharPre() { - System.out.print("[ "); - caminharPre(raiz); - System.out.println("]"); - } - - /** - * 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 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. - * @param x Elemento a ser inserido. - * @throws Exception Se o elemento existir. - */ - public void inserir(int x) throws Exception { - raiz = inserir(x, raiz); - } + /** + * Metodo publico iterativo para inserir elemento. + * @param x Elemento a ser inserido. + * @throws Exception Se o elemento existir. + */ + public void inserir(int x) throws Exception { + raiz = inserir(x, raiz); + } - /** - * Metodo privado recursivo para inserir elemento. - * @param x Elemento a ser inserido. - * @param i No em analise. - * @return No em analise, alterado ou nao. - * @throws Exception Se o elemento existir. - */ - private No inserir(int x, No i) throws Exception { - if (i == null) { - i = new No(x); + /** + * Metodo privado recursivo para inserir elemento. + * @param x Elemento a ser inserido. + * @param i No em analise. + * @return No em analise, alterado ou nao. + * @throws Exception Se o elemento existir. + */ + private No inserir(int x, No i) throws Exception { + if (i == null) { + 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); - - } else { - throw new Exception("Erro ao inserir!"); - } - - return i; - } - - /** - * 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!"); - } - } - - /** - * 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 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 < pai.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. - * @param x Elemento a ser removido. - * @throws Exception Se nao encontrar elemento. - */ - public void remover(int x) throws Exception { - raiz = remover(x, raiz); - } + /** + * Metodo publico iterativo para remover elemento. + * @param x Elemento a ser removido. + * @throws Exception Se nao encontrar elemento. + */ + public void remover(int x) throws Exception { + raiz = remover(x, raiz); + } - /** - * Metodo privado recursivo para remover elemento. - * @param x Elemento a ser removido. - * @param i No em analise. - * @return No em analise, alterado ou nao. - * @throws Exception Se nao encontrar elemento. - */ - private No remover(int x, No i) throws Exception { + /** + * Metodo privado recursivo para remover elemento. + * @param x Elemento a ser removido. + * @param i No em analise. + * @return No em analise, alterado ou nao. + * @throws Exception Se nao encontrar elemento. + */ + private No remover(int x, No i) throws Exception { - if (i == null) { - throw new Exception("Erro ao remover!"); + if (i == null) { + throw new Exception("Erro ao remover!"); - } else if (x < i.elemento) { - i.esq = remover(x, i.esq); + } else if (x < i.elemento) { + i.esq = remover(x, i.esq); - } else if (x > i.elemento) { - i.dir = remover(x, i.dir); + } else if (x > i.elemento) { + i.dir = remover(x, i.dir); - // Sem no a direita. - } else if (i.dir == null) { - i = i.esq; + // Sem no a direita. + } else if (i.dir == null) { + i = i.esq; - // Sem no a esquerda. - } else if (i.esq == null) { - i = i.dir; + // Sem no a esquerda. + } else if (i.esq == null) { + i = i.dir; - // No a esquerda e no a direita. - } else { - i.esq = maiorEsq(i, i.esq); - } + // No a esquerda e no a direita. + } else { + i.esq = maiorEsq(i, i.esq); + } - return i; - } + return i; + } - /** - * Metodo para trocar o elemento "removido" pelo maior da esquerda. - * @param i No que teve o elemento removido. - * @param j No da subarvore esquerda. - * @return No em analise, alterado ou nao. - */ - private No maiorEsq(No i, No j) { + /** + * Metodo para trocar o elemento "removido" pelo maior da esquerda. + * @param i No que teve o elemento removido. + * @param j No da subarvore esquerda. + * @return No em analise, alterado ou nao. + */ + private No maiorEsq(No i, No j) { - // Encontrou o maximo da subarvore esquerda. - if (j.dir == null) { - i.elemento = j.elemento; // Substitui i por j. - j = j.esq; // Substitui j por j.ESQ. + // Encontrou o maximo da subarvore esquerda. + if (j.dir == null) { + i.elemento = j.elemento; // Substitui i por j. + j = j.esq; // Substitui j por j.ESQ. - // Existe no a direita. - } else { - // Caminha para direita. - j.dir = maiorEsq(i, j.dir); - } - return j; - } + // Existe no a direita. + } else { + // Caminha para direita. + j.dir = maiorEsq(i, j.dir); + } + return j; + } - /** - * Metodo que retorna o maior elemento da árvore - * @return int maior elemento da árvore - */ - public int getMaior(){ - int resp = -1; - - if(raiz != null){ - No i; - for(i = raiz; i.dir != null; i = i.dir); - resp = i.elemento; - } - - return resp; - } + /** + * Metodo que retorna o maior elemento da árvore + * @return int maior elemento da árvore + */ + public int getMaior(){ + int resp = -1; + if(raiz != null){ + No i; + for(i = raiz; i.dir != null; i = i.dir); + resp = i.elemento; + } + return resp; + } - /** - * Metodo que retorna o menor elemento da árvore - * @return int menor elemento da árvore - */ - public int getMenor(){ - int resp = -1; - - if(raiz != null){ - No i; - for(i = raiz; i.esq != null; i = i.esq); - resp = i.elemento; - } - - return resp; - } + /** + * Metodo que retorna o menor elemento da árvore + * @return int menor elemento da árvore + */ + public int getMenor(){ + int resp = -1; + if(raiz != null){ + No i; + for(i = raiz; i.esq != null; i = i.esq); + resp = i.elemento; + } + return resp; + } - /** - * Metodo que retorna a altura da árvore - * @return int altura da árvore - */ - public int getAltura(){ - return getAltura(raiz, 0); - } + /** + * Metodo que retorna a altura da árvore + * @return int altura da árvore + */ + public int getAltura(){ + 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 - * @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 publico iterativo para remover 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); + } + } + /** + * 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); + } + } - /** - * Metodo publico iterativo para remover 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 int getRaiz() throws Exception { + return raiz.elemento; + } - /** - * 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 static boolean igual (ArvoreBinaria a1, ArvoreBinaria a2){ + return igual(a1.raiz, a2.raiz); + } - public int getRaiz() throws Exception { - return raiz.elemento; - } + private static boolean igual (No i1, No i2){ + 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){ - return igual(a1.raiz, a2.raiz); - } + public int soma(){ + return soma(raiz); + } - private static boolean igual (No i1, No i2){ - 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 int soma(No i){ + int resp = 0; + if(i != null){ + resp = i.elemento; + resp += soma(i.esq); + resp += soma(i.dir); + } + return resp; + } - public int soma(){ - return soma(raiz); - } + public int quantidadePares(){ + return quantidadePares(raiz); + } - public int soma(No i){ - int resp = 0; - if(i != null){ - resp = i.elemento + soma(i.esq) + soma(i.dir); - } - return resp; - } + public int quantidadePares(No i){ + int resp = 0; + if(i != null){ + resp = ((i.elemento % 2 == 0) ? 1 : 0); + resp += quantidadePares(i.esq); + resp += quantidadePares(i.dir); + } + return resp; + } - public int quantidadePares(){ - return quantidadePares(raiz); - } + public boolean hasDiv11(){ + return hasDiv11(raiz); + } - public int quantidadePares(No i){ - int resp = 0; - if(i != null){ - resp = ((i.elemento % 2 == 0) ? 1 : 0) + quantidadePares(i.esq) + quantidadePares(i.dir); - } - 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; - } + public boolean hasDiv11(No i){ + boolean resp = false; + if(i != null){ + resp = (i.elemento % 11 == 0) || hasDiv11(i.esq) || hasDiv11(i.dir); + } + return resp; + } } + diff --git a/fonte/u07 Árvores binárias/arvoreBinaria/java/No.java b/fonte/u07 Árvores binárias/arvoreBinaria/java/No.java index 03ee6bc..11df066 100644 --- a/fonte/u07 Árvores binárias/arvoreBinaria/java/No.java +++ b/fonte/u07 Árvores binárias/arvoreBinaria/java/No.java @@ -1,28 +1,31 @@ + /** * No da arvore binaria * @author Max do Val Machado */ + class No { - public int elemento; // Conteudo do no. - public No esq, dir; // Filhos da esq e dir. + public int elemento; // Conteudo do no. + public No esq, dir; // Filhos da esq e dir. - /** - * Construtor da classe. - * @param elemento Conteudo do no. - */ - public No(int elemento) { - this(elemento, null, null); - } + /** + * Construtor da classe. + * @param elemento Conteudo do no. + */ + public No(int elemento) { + this(elemento, null, null); + } - /** - * Construtor da classe. - * @param elemento Conteudo do no. - * @param esq No da esquerda. - * @param dir No da direita. - */ - public No(int elemento, No esq, No dir) { - this.elemento = elemento; - this.esq = esq; - this.dir = dir; - } + /** + * Construtor da classe. + * @param elemento Conteudo do no. + * @param esq No da esquerda. + * @param dir No da direita. + */ + public No(int elemento, No esq, No dir) { + this.elemento = elemento; + this.esq = esq; + this.dir = dir; + } } + diff --git a/fonte/u07 Árvores binárias/arvoreBinaria/java/Principal.java b/fonte/u07 Árvores binárias/arvoreBinaria/java/Principal.java index cf4ed9b..700c137 100644 --- a/fonte/u07 Árvores binárias/arvoreBinaria/java/Principal.java +++ b/fonte/u07 Árvores binárias/arvoreBinaria/java/Principal.java @@ -3,32 +3,13 @@ * @author Max do Val Machado */ public class Principal { - public static void main(String[] args) throws Exception { - ArvoreBinaria arvoreBinaria = new ArvoreBinaria(); - - arvoreBinaria.inserir(3); - arvoreBinaria.inserir(5); - arvoreBinaria.inserir(1); - arvoreBinaria.inserir(8); - 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(); - } + public static void main(String[] args) throws Exception { + ArvoreBinaria arvoreBinaria = new ArvoreBinaria(); + for(int i=1; i<30; i++){ + arvoreBinaria.inserir(i); + System.out.print("No. nos: " + i); + System.out.print("\t Altura: " + arvoreBinaria.getAltura()); + System.out.println("\t log(2): " + Math.log(i)/Math.log(2)); + } + } } diff --git a/fonte/u07 Árvores binárias/arvoreBinaria/java/Principal2.java b/fonte/u07 Árvores binárias/arvoreBinaria/java/Principal2.java index 428f4c5..76b27dc 100644 --- a/fonte/u07 Árvores binárias/arvoreBinaria/java/Principal2.java +++ b/fonte/u07 Árvores binárias/arvoreBinaria/java/Principal2.java @@ -5,24 +5,24 @@ import java.util.*; public class Principal2 { - public static void main(String[] args) throws Exception { - ArvoreBinaria a = new ArvoreBinaria(); + public static void main(String[] args) throws Exception { + ArvoreBinaria a = new ArvoreBinaria(); - Random gerador = new Random(); - gerador.setSeed(0); - for(int i = 1; i <= 100000; i++){ - int valor; - do { - valor = Math.abs(gerador.nextInt()); - } while (a.pesquisar(valor) == true); + Random gerador = new Random(); + gerador.setSeed(0); + for(int i = 1; i <= 100000; i++){ + int valor; + do { + valor = Math.abs(gerador.nextInt()); + } while (a.pesquisar(valor) == true); - a.inserir(valor); + a.inserir(valor); - if(i % 1000 == 0){ - double log2 = (Math.log(i) / Math.log(2)); - log2 *= 1.39; - System.out.println("Número de nós = " + i + " --- log(i,2) = " + log2 + " --- h = " + a.getAltura()); - } - } - } + if(i % 1000 == 0){ + double log2 = (Math.log(i) / Math.log(2)); + log2 *= 1.39; + System.out.println("Número de nós = " + i + " --- log(i,2) = " + log2 + " --- h = " + a.getAltura()); + } + } + } } diff --git a/tps/entrada e saida/tp03/TP03Q11 - Lista Flexível em Java/pub.out b/tps/entrada e saida/tp03/TP03Q11 - Lista Flexível em Java/pub.out index 02a0087..c5b4ebc 100644 --- a/tps/entrada e saida/tp03/TP03Q11 - Lista Flexível em Java/pub.out +++ b/tps/entrada e saida/tp03/TP03Q11 - Lista Flexível em Java/pub.out @@ -1,4 +1,4 @@ -(R) Castle +(R) Castle (R) House of Cards (R) Dexter (R) Everybody Hates Chris