SlideShare una empresa de Scribd logo
1 de 5
Descargar para leer sin conexión
Exercícios

1) Descreva numa notação mais precisa os algoritmos de inserção e de remoção em arvores
   AVL, de pesquisa digital, binária de busca sem entrarem muitos pormenores de
   programação.

2) Podemos utilizar árvores binárias para representar expressões aritméticas (como ((a+b)*c-
   d)/(e-f) +g, por exemplo). Tente desenhar uma árvore para a expressão acima, e explique
   como poderíamos implementar o cálculo da expressão.

3) Para a busca de um elemento numa árvore podemos escrever a função abaixo. Teste a
   função e explique o seu funcionamento.

// Função para procurar um elemento numa arvore
            ARV procura (ARV a , int b)
            {
              if (EMPTY(a)) return NULL;
              else
                    if ( a->info == b ) return a;
                          else
                          if ( b > a->info )
                                return procura (a->dir, b);
                          else return procura (a->esq, b);}

4) Um percurso numa árvore mostra os elementos ali armazenados. No caso de uma árvore
   binária, podemos percorrer usando 3 estratégias: em ordem, pré-ordem e pós-ordem. A
   função abaixo mostra uma função de percurso em ordem (esquerda-raiz-direita). Teste a
   função e mostre o resultado para os elementos de uma árvore binária qualquer.

//Função para percorrer a árvore respeitando o critério EM ORDEM
            void inOrder (ARV a)
            {
            if (! EMPTY(a) )
              { inOrder(a->esq);
              printf(" %d ", a->info);
              inOrder(a->dir);

5) Faça as funções para os percursos pré-ordem (raiz-esquerda-direita) e pós-ordem
   (esquerdadireita-raiz).

6) Implemente uma função que retorne a quantidade de folhas de uma árvore binária. Essa
   função deve obedecer ao protótipo: int folhas (Arv* a);

Solução
int folhas (Arv* a)
{
if (arv_vazia(a->esq) && arv_vazia(a->dir))
      return 1;
else if (!arv_vazia(a->esq) && arv_vazia(a->dir))
      return folhas(a->esq);
      else if (arv_vazia(a->esq) && !arv_vazia(a->dir))
            return folhas(a->dir);
return folhas(a->esq) + folhas(a->dir);
}
7) Considere a árvore AVL a seguir:


                                             30

                              25                                 45


                   15                             41                       56


                                            35              43        50



    Realize, na árvore acima, as inserções das seguintes chaves 49, 60, 65, e em seguida a
    remoção das chaves 45 e 41, escolhendo necessariamente imediatamente precedente para a
    posição da chave removida. Mostre todas as rotações e o formato da árvore após cada
    operação.

8) Mostre passo a passo a árvore binária resultante das seguintes operações:

    a) Inserção de 7, 8, 3, 4, 2, 1, 6, 5
    b) Mostre o percurso em pré-ordem, em-ordem e pós-ordem
    c) Remoção de 7 e 6


9) Quais chaves/palavras estão representadas nesta TRIE?




Solução: foi, fora, fui vai, ver, veremos, vi, viu, vimos


10) Demonstre a árvore TRIE (passo a passo) para as seguintes chaves, bem como seus
    significados:

MACA – MACHO – MATO – BALA – BANANA – BALELA - BALEIA

Solução
1       2       3       4




    5               6




            7
Solução
Índices gerados a partir da inserção no TRIE.
1 -> Utilizada para socorrer pessoas
2 -> Gênero encontrado na natureza
3 -> Local com árvores e animais
4 -> Doce conhecido entre crianças e “professores”
5 -> Fruta tropical
6 -> No sentido de enrolação
7 -> Animal encontra no mar

11) Qual seria o resultado utilizando uma árvore TRIE A partir das digitações abaixo:

                       Solução
       B               -> BALA, BALEIA, BALELA, BANANA
       BA              -> BALA, BALEIA, BALELA, BANANA
       BAL             -> BALA, BALEIA, BALELA
       BALE            -> BALEIA, BALELA
       BALEL           -> BALELA


12) Dada uma árvore PATRICIA, forneça as seguintes informações:

       a)   Conceito
       b)   Características
       c)   Funcionamento de Inserção/Remoção
       d)   Exemplo

13) Descreva o funcionamento das pesquisas seqüencial e binária e proponha algoritmos para as
    mesmas. Utilize alocação estática ou dinâmica.

Solução
Sequencial.c
#include <stdio.h>
#include <stdlib.h>
#define TAMANHO 10
int main () {
int vetor[TAMANHO] = {0,3,4,7,5,2,9,6,1,8};
int valor = 11;
int i;
int encontrado;
i = 0;
encontrado = 0; /*Falso*/
while (i < TAMANHO && !encontrado) {
      if (vetor[i] == valor) {
      encontrado = 1; /*Verdadeiro*/
      } else {
      i++; }
}
if (encontrado) {
      printf ("Valor %d encontrado na posicao %dn", vetor[i], i);
} else {
      printf ("Valor %d nao encontradon", valor);
}
system("pause");
return 0;
}
Binária.c
#include <stdio.h>
#include <stdlib.h>
#define TAMANHO 10
int main () {
int vetor[TAMANHO] = {0,1,2,3,4,5,6,7,8,9};
int valor = 3;
int encontrado;
int direita, esquerda, meio;
encontrado = 0; /*Falso*/
esquerda = 0;
direita = TAMANHO - 1;
while (esquerda <= direita && !encontrado) {
      meio = (direita + esquerda) / 2;
if (vetor[meio] == valor)
      encontrado = 1; /*Verdadeiro*/
else if (valor < vetor[meio])
            direita = meio - 1;
      else
            esquerda = meio + 1;
}
if (encontrado) {
      printf ("Valor %d encontrado na posicao %dn", vetor[meio],
meio);
} else {
      printf ("Valor %d não encontradon", valor);
}
return 0;
}


14) Dada uma tabela Hash, forneça as seguintes informações:

       a) Conceito
       b) Características
       c) Funcionamento


15) Demonstre a inserção das chaves 5, 28, 19,15,20,33,12,17 e 10 em uma tabela hash com
    colisões resolvidas por encadeamento. Considere a tabela com 9 posições e a função hash
    como sendo h(k) = k mod 9

Más contenido relacionado

La actualidad más candente

Recuperação paralela
Recuperação paralelaRecuperação paralela
Recuperação paralelairaciva
 
Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosMarcos Thomaz
 
Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03thomasdacosta
 
Aula de Prolog 07 - Estruturas de Dados
Aula de Prolog 07 - Estruturas de DadosAula de Prolog 07 - Estruturas de Dados
Aula de Prolog 07 - Estruturas de DadosFabio Moura Pereira
 
Fundamentos SQL - Microsoft SQL Server 2019 - Parte 3/8
Fundamentos SQL - Microsoft SQL Server 2019 - Parte 3/8Fundamentos SQL - Microsoft SQL Server 2019 - Parte 3/8
Fundamentos SQL - Microsoft SQL Server 2019 - Parte 3/8Emiliano Barbosa
 
Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Emiliano Barbosa
 
Criação de log de ações através do banco - PostgreSQL
Criação de log de ações através do banco - PostgreSQLCriação de log de ações através do banco - PostgreSQL
Criação de log de ações através do banco - PostgreSQLMarcos Thomaz
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando CVinícius Hax
 
Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05thomasdacosta
 
2 funcoes e estrutura de blocos
2   funcoes e estrutura de blocos2   funcoes e estrutura de blocos
2 funcoes e estrutura de blocosRicardo Bolanho
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaEduardo Bregaida
 
Aula 6 MAT
Aula 6 MATAula 6 MAT
Aula 6 MATgsbq
 
Haskell aula5 f.ordem-sup_modulos-cifra_cesar
Haskell aula5 f.ordem-sup_modulos-cifra_cesarHaskell aula5 f.ordem-sup_modulos-cifra_cesar
Haskell aula5 f.ordem-sup_modulos-cifra_cesarCRISLANIO MACEDO
 

La actualidad más candente (18)

Recuperação paralela
Recuperação paralelaRecuperação paralela
Recuperação paralela
 
Curso de PHP - Arrays
Curso de PHP - ArraysCurso de PHP - Arrays
Curso de PHP - Arrays
 
Recursividade
RecursividadeRecursividade
Recursividade
 
Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos Comandos
 
Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03
 
Programacao funcional
Programacao funcionalProgramacao funcional
Programacao funcional
 
Aula de Prolog 07 - Estruturas de Dados
Aula de Prolog 07 - Estruturas de DadosAula de Prolog 07 - Estruturas de Dados
Aula de Prolog 07 - Estruturas de Dados
 
Funcoes
FuncoesFuncoes
Funcoes
 
Fundamentos SQL - Microsoft SQL Server 2019 - Parte 3/8
Fundamentos SQL - Microsoft SQL Server 2019 - Parte 3/8Fundamentos SQL - Microsoft SQL Server 2019 - Parte 3/8
Fundamentos SQL - Microsoft SQL Server 2019 - Parte 3/8
 
Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8
 
Criação de log de ações através do banco - PostgreSQL
Criação de log de ações através do banco - PostgreSQLCriação de log de ações através do banco - PostgreSQL
Criação de log de ações através do banco - PostgreSQL
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando C
 
Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05
 
2 funcoes e estrutura de blocos
2   funcoes e estrutura de blocos2   funcoes e estrutura de blocos
2 funcoes e estrutura de blocos
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completa
 
Python Class
Python ClassPython Class
Python Class
 
Aula 6 MAT
Aula 6 MATAula 6 MAT
Aula 6 MAT
 
Haskell aula5 f.ordem-sup_modulos-cifra_cesar
Haskell aula5 f.ordem-sup_modulos-cifra_cesarHaskell aula5 f.ordem-sup_modulos-cifra_cesar
Haskell aula5 f.ordem-sup_modulos-cifra_cesar
 

Similar a Árvores binárias e TRIE

Árvores: Conceitos e binárias
Árvores:  Conceitos e bináriasÁrvores:  Conceitos e binárias
Árvores: Conceitos e bináriasSérgio Souza Costa
 
Maratona de Programação com STL
Maratona de Programação com STLMaratona de Programação com STL
Maratona de Programação com STLMarcos Castro
 
PW03 - Programação Web PHP Arrays (Vetores)
PW03 - Programação Web PHP Arrays (Vetores)PW03 - Programação Web PHP Arrays (Vetores)
PW03 - Programação Web PHP Arrays (Vetores)Silvano Oliveira
 
15 algoritmos de busca em tabelas - sequencial e binaria
15   algoritmos de busca em tabelas - sequencial e binaria15   algoritmos de busca em tabelas - sequencial e binaria
15 algoritmos de busca em tabelas - sequencial e binariaRicardo Bolanho
 
Apresentação j query5
Apresentação j query5Apresentação j query5
Apresentação j query5douglasgrava
 
Android - Dicas de Performance
Android - Dicas de PerformanceAndroid - Dicas de Performance
Android - Dicas de PerformanceAmélia Pessoa
 
Técnicas de Programação Funcional
Técnicas de Programação FuncionalTécnicas de Programação Funcional
Técnicas de Programação FuncionalLambda 3
 
JS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript FuncionalJS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript FuncionaliMasters
 
Vetores, Matrizes e Strings em C Parte 1
Vetores, Matrizes e Strings em C Parte 1Vetores, Matrizes e Strings em C Parte 1
Vetores, Matrizes e Strings em C Parte 1Elaine Cecília Gatto
 
Aulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton YagamiAulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton YagamiAyrton Yagami
 

Similar a Árvores binárias e TRIE (20)

Java script aula 04 - objeto array
Java script   aula 04 - objeto arrayJava script   aula 04 - objeto array
Java script aula 04 - objeto array
 
SPL Datastructures
SPL DatastructuresSPL Datastructures
SPL Datastructures
 
Árvores: Conceitos e binárias
Árvores:  Conceitos e bináriasÁrvores:  Conceitos e binárias
Árvores: Conceitos e binárias
 
Maratona de Programação com STL
Maratona de Programação com STLMaratona de Programação com STL
Maratona de Programação com STL
 
PW03 - Programação Web PHP Arrays (Vetores)
PW03 - Programação Web PHP Arrays (Vetores)PW03 - Programação Web PHP Arrays (Vetores)
PW03 - Programação Web PHP Arrays (Vetores)
 
Java 05
Java 05Java 05
Java 05
 
Aula 02 - Curso PHP e MySQL
Aula 02 - Curso PHP e MySQLAula 02 - Curso PHP e MySQL
Aula 02 - Curso PHP e MySQL
 
PHP Básico - Parte 3
PHP Básico - Parte 3PHP Básico - Parte 3
PHP Básico - Parte 3
 
15 algoritmos de busca em tabelas - sequencial e binaria
15   algoritmos de busca em tabelas - sequencial e binaria15   algoritmos de busca em tabelas - sequencial e binaria
15 algoritmos de busca em tabelas - sequencial e binaria
 
Apostila rpira
Apostila rpiraApostila rpira
Apostila rpira
 
Apresentação j query5
Apresentação j query5Apresentação j query5
Apresentação j query5
 
Android - Dicas de Performance
Android - Dicas de PerformanceAndroid - Dicas de Performance
Android - Dicas de Performance
 
Python
PythonPython
Python
 
Técnicas de Programação Funcional
Técnicas de Programação FuncionalTécnicas de Programação Funcional
Técnicas de Programação Funcional
 
Python 02
Python 02Python 02
Python 02
 
JS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript FuncionalJS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript Funcional
 
Vetores, Matrizes e Strings em C Parte 1
Vetores, Matrizes e Strings em C Parte 1Vetores, Matrizes e Strings em C Parte 1
Vetores, Matrizes e Strings em C Parte 1
 
Aulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton YagamiAulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton Yagami
 
Java8
Java8Java8
Java8
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
 

Más de CriatividadeZeroDocs

Más de CriatividadeZeroDocs (10)

Introdução a estrutura de dados
Introdução a estrutura de dadosIntrodução a estrutura de dados
Introdução a estrutura de dados
 
Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)
Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)
Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)
 
Pilhas e Filas
Pilhas e FilasPilhas e Filas
Pilhas e Filas
 
Coalesced hashing / Hash Coalescido
Coalesced hashing / Hash CoalescidoCoalesced hashing / Hash Coalescido
Coalesced hashing / Hash Coalescido
 
Implementação do Hash Coalha/Coalesced
Implementação do Hash Coalha/CoalescedImplementação do Hash Coalha/Coalesced
Implementação do Hash Coalha/Coalesced
 
Exercício sobre hashing
Exercício sobre hashingExercício sobre hashing
Exercício sobre hashing
 
Aula sobre Tabela Hash
Aula sobre Tabela HashAula sobre Tabela Hash
Aula sobre Tabela Hash
 
Operadores Lineares
Operadores LinearesOperadores Lineares
Operadores Lineares
 
Machado de assis
Machado de assisMachado de assis
Machado de assis
 
áLbum de fotografias
áLbum de fotografiasáLbum de fotografias
áLbum de fotografias
 

Árvores binárias e TRIE

  • 1. Exercícios 1) Descreva numa notação mais precisa os algoritmos de inserção e de remoção em arvores AVL, de pesquisa digital, binária de busca sem entrarem muitos pormenores de programação. 2) Podemos utilizar árvores binárias para representar expressões aritméticas (como ((a+b)*c- d)/(e-f) +g, por exemplo). Tente desenhar uma árvore para a expressão acima, e explique como poderíamos implementar o cálculo da expressão. 3) Para a busca de um elemento numa árvore podemos escrever a função abaixo. Teste a função e explique o seu funcionamento. // Função para procurar um elemento numa arvore ARV procura (ARV a , int b) { if (EMPTY(a)) return NULL; else if ( a->info == b ) return a; else if ( b > a->info ) return procura (a->dir, b); else return procura (a->esq, b);} 4) Um percurso numa árvore mostra os elementos ali armazenados. No caso de uma árvore binária, podemos percorrer usando 3 estratégias: em ordem, pré-ordem e pós-ordem. A função abaixo mostra uma função de percurso em ordem (esquerda-raiz-direita). Teste a função e mostre o resultado para os elementos de uma árvore binária qualquer. //Função para percorrer a árvore respeitando o critério EM ORDEM void inOrder (ARV a) { if (! EMPTY(a) ) { inOrder(a->esq); printf(" %d ", a->info); inOrder(a->dir); 5) Faça as funções para os percursos pré-ordem (raiz-esquerda-direita) e pós-ordem (esquerdadireita-raiz). 6) Implemente uma função que retorne a quantidade de folhas de uma árvore binária. Essa função deve obedecer ao protótipo: int folhas (Arv* a); Solução int folhas (Arv* a) { if (arv_vazia(a->esq) && arv_vazia(a->dir)) return 1; else if (!arv_vazia(a->esq) && arv_vazia(a->dir)) return folhas(a->esq); else if (arv_vazia(a->esq) && !arv_vazia(a->dir)) return folhas(a->dir); return folhas(a->esq) + folhas(a->dir); }
  • 2. 7) Considere a árvore AVL a seguir: 30 25 45 15 41 56 35 43 50 Realize, na árvore acima, as inserções das seguintes chaves 49, 60, 65, e em seguida a remoção das chaves 45 e 41, escolhendo necessariamente imediatamente precedente para a posição da chave removida. Mostre todas as rotações e o formato da árvore após cada operação. 8) Mostre passo a passo a árvore binária resultante das seguintes operações: a) Inserção de 7, 8, 3, 4, 2, 1, 6, 5 b) Mostre o percurso em pré-ordem, em-ordem e pós-ordem c) Remoção de 7 e 6 9) Quais chaves/palavras estão representadas nesta TRIE? Solução: foi, fora, fui vai, ver, veremos, vi, viu, vimos 10) Demonstre a árvore TRIE (passo a passo) para as seguintes chaves, bem como seus significados: MACA – MACHO – MATO – BALA – BANANA – BALELA - BALEIA Solução
  • 3. 1 2 3 4 5 6 7
  • 4. Solução Índices gerados a partir da inserção no TRIE. 1 -> Utilizada para socorrer pessoas 2 -> Gênero encontrado na natureza 3 -> Local com árvores e animais 4 -> Doce conhecido entre crianças e “professores” 5 -> Fruta tropical 6 -> No sentido de enrolação 7 -> Animal encontra no mar 11) Qual seria o resultado utilizando uma árvore TRIE A partir das digitações abaixo: Solução B -> BALA, BALEIA, BALELA, BANANA BA -> BALA, BALEIA, BALELA, BANANA BAL -> BALA, BALEIA, BALELA BALE -> BALEIA, BALELA BALEL -> BALELA 12) Dada uma árvore PATRICIA, forneça as seguintes informações: a) Conceito b) Características c) Funcionamento de Inserção/Remoção d) Exemplo 13) Descreva o funcionamento das pesquisas seqüencial e binária e proponha algoritmos para as mesmas. Utilize alocação estática ou dinâmica. Solução Sequencial.c #include <stdio.h> #include <stdlib.h> #define TAMANHO 10 int main () { int vetor[TAMANHO] = {0,3,4,7,5,2,9,6,1,8}; int valor = 11; int i; int encontrado; i = 0; encontrado = 0; /*Falso*/ while (i < TAMANHO && !encontrado) { if (vetor[i] == valor) { encontrado = 1; /*Verdadeiro*/ } else { i++; } } if (encontrado) { printf ("Valor %d encontrado na posicao %dn", vetor[i], i); } else { printf ("Valor %d nao encontradon", valor); } system("pause"); return 0; }
  • 5. Binária.c #include <stdio.h> #include <stdlib.h> #define TAMANHO 10 int main () { int vetor[TAMANHO] = {0,1,2,3,4,5,6,7,8,9}; int valor = 3; int encontrado; int direita, esquerda, meio; encontrado = 0; /*Falso*/ esquerda = 0; direita = TAMANHO - 1; while (esquerda <= direita && !encontrado) { meio = (direita + esquerda) / 2; if (vetor[meio] == valor) encontrado = 1; /*Verdadeiro*/ else if (valor < vetor[meio]) direita = meio - 1; else esquerda = meio + 1; } if (encontrado) { printf ("Valor %d encontrado na posicao %dn", vetor[meio], meio); } else { printf ("Valor %d não encontradon", valor); } return 0; } 14) Dada uma tabela Hash, forneça as seguintes informações: a) Conceito b) Características c) Funcionamento 15) Demonstre a inserção das chaves 5, 28, 19,15,20,33,12,17 e 10 em uma tabela hash com colisões resolvidas por encadeamento. Considere a tabela com 9 posições e a função hash como sendo h(k) = k mod 9