|
| 1 | +## 🌴 Árvores Binárias |
| 2 | +- [x] Árvore Binária de Busca |
| 3 | +- [x] Árvore AVL |
| 4 | +- [x] Árvore Vermelho-Preta |
| 5 | + |
| 6 | +#### 🛠 Como rodar |
| 7 | + 1. Entre em alguma pasta dentro do diretório "Arvores", exemplo: ```cd Arvores/BST``` |
| 8 | + 2. Compile para um executável com ```gcc *.c -o nome_do_executavel```, exemplo: ```gcc *.c -o resultado``` |
| 9 | + 3. Rode o programa com ```./resultado``` |
| 10 | +#### 🚧 Teste |
| 11 | + 1. Rode o executável passando o arquivo de entrada (teste.in) e redirecione o resultado para um arquivo de saída(resultado.out) com |
| 12 | + ```./resultado < teste.in > resultado.out``` |
| 13 | + 2. Compare o arquivo de sáida com o arquivo de gabarito (teste_esperado.out) que contém o resultado esperado para o arquivo de entrada usado antes, rode ```diff teste_esperado.out resultado.out``` |
| 14 | + |
| 15 | +## 🧩 Grafos |
| 16 | +- [x] Algorítmo de Kruskal (implementado com a representação Matriz de Adjacência) |
| 17 | +- [x] Algorítmo de Prim (implementado com a representação Lista de Adjacência) |
| 18 | +- [x] Busca em Largura (implementado com a representação Matriz de Adjacência) |
| 19 | +- [x] Busca em Profundidade (implementado com a representação Lista de Adjacência) |
| 20 | +#### 🛠 Como rodar |
| 21 | + 1. Entre em alguma pasta dentro do diretório "Grafos", exemplo: ```cd Grafos/AlgoritmoDeKruskal``` |
| 22 | + 2. Compile para um executável com ```g++ *.cpp -o nome_do_executavel```, exemplo: ```g++ *.cpp -o resultado``` |
| 23 | + 3. Rode o programa com ```./resultado``` |
| 24 | + |
| 25 | +## 📂 Arquivos |
| 26 | +Esse demo salva livros no disco e também é capaz de lê-los ao implementar uma lógica de indexação onde não é necessário salvar todo o arquivo dos livros na memória, |
| 27 | +invés disso, nós usamos uma estrutura de indexação. Nesse caso, uma Árvore AVL. |
| 28 | + |
| 29 | +Cada nó da árvore armazena apenas o código do livro e seu índice do arquivo dos livros salvos, então estamos economizando muita memória ao armazenar apenas dois inteiros |
| 30 | +(o código e o índice do livro) como conteúdo da estrutura da árvore, no lugar de salvar toda as informações dos livros, o que se tornaria um problema, se tivéssemos, por exemplo, |
| 31 | +1.000.000 de livros. |
| 32 | + |
| 33 | +Quando precisamos ler um livro específico, apenas fazemos uma pesquisa na estrutura de indexação (Árvore AVL) pelo seu código, este nó também contém o índice daquele livro |
| 34 | +do arquivo de dados, quando o abrimos, já temos a exata posição do livro que queremos, então apenas carregamos ele na memória, não o arquivo de dados inteiro. |
| 35 | +É uma implementação eficiente de uso de memória. |
| 36 | + |
| 37 | +#### 🛠 Como rodar |
| 38 | + 1. Entre no diretório "Arquivos" com ```cd Arquivos``` |
| 39 | + 2. Compile para um executável com ```gcc *.c -o nome_do_executavel```, exemplo: ```gcc *.c -o resultado``` |
| 40 | + 3. Rode o programa com ```./resultado``` |
0 commit comments