Escolar Documentos
Profissional Documentos
Cultura Documentos
ÁRVORES E ÁRVORE
BINÁRIA DE BUSCA
Prof. André Backes
Definição
2
1
11/11/2021
Definição
3
B C
D E F G
Definição
4
Vértice
Cada uma das entidades representadas na
árvore (depende da natureza do problema).
Basicamente, qualquer problema em que exista
algum tipo de hierarquia pode ser representado
por uma árvore
2
11/11/2021
Definição
5
Exemplo
Estrutura de pastas do computador
Definição
6
Exemplos
relaçõesde descendência (pai, filho, etc.)
diagrama hierárquico de uma organização;
campeonatos de modalidades desportivas;
taxonomia
Em computação
busca de dados armazenados no computador
representação de espaço de soluções
Exemplo: jogo de xadrez;
modelagem de algoritmos
3
11/11/2021
Conceitos básicos
7
Conceitos básicos
8
4
11/11/2021
Conceitos básicos
9
Exemplo
NÓ RAIZ ou PAI DO NO C
A
PAI DO NÓ G
B C
FILHO DO NÓ C
D E F G
FILHOS DO NÓ B
NÓ FOLHA
OU TERMINAL
Conceitos básicos
10
Observação
Dado um determinado nó da árvore, cada filho
seu é considerado a raiz de uma nova sub-
árvore
Qualquer nó é a raiz de uma sub-árvore consistindo
dele e dos nós abaixo dele
Conceito recursivo
5
11/11/2021
Conceitos básicos
11
Altura
Também chamada de profundidade
Número total de níveis de uma árvore
Comprimento do caminho mais longo da raiz até uma
das suas folhas
Conceitos básicos
12
Nível e altura
NÍVEL 0 A
ALTURA NÍVEL 1 B C
NÍVEL 2 D E F G
6
11/11/2021
Tipos de árvores
13
Árvore Binária
14
B C
SUB-ÁRVORE SUB-ÁRVORE
ESQUERDA DIREITA
D E F G
7
11/11/2021
Árvore Binária
15
NÓ A ESQUERDA NÓ A DIREITA
DE X DE X
X
SUB-ÁRVORE
ESQUERDA
SUB-ÁRVORE
DIREITA
Árvore Binária
16
Cheia
8
11/11/2021
Árvore Binária
17
ÁRVORE ÁRVORE
BINÁRIA ESTRITAMENTE
BINÁRIA
Árvore Binária
18
9
11/11/2021
Árvore Binária
19
Nível (n) 0 1 2 3
Nº de nós 1 2 4 8
Potência 20 21 22 23
Tipo de representação
20
10
11/11/2021
Tipo de representação
21
FILHOS
F G
Tipo de representação
22
B C
D E
*esq dado *dir *esq dado *dir
F G B C
11
11/11/2021
Definição
Uso de alocação dinâmica
Para guardar o primeiro nó da árvore utilizamos um
ponteiro para ponteiro
Um ponteiro para ponteiro pode guardar o endereço
de um ponteiro
Assim, fica fácil mudar quem é a raiz da árvore (se
necessário)
Definição
ArvBin* raiz
NO
raiz
*esq dado *dir
NO
12
11/11/2021
Definição
Criando a árvore
13
11/11/2021
Liberando a árvore
Uso de 2 funções: uma percorre e libera os nós,
outra trata a raiz
14
11/11/2021
15
11/11/2021
16
11/11/2021
Percurso na árvore
33
Percurso na árvore
34
17
11/11/2021
Percurso pré-ordem
35
Ordem de visitação
Raiz
Filho esquerdo
Filho direito
Percurso pré-ordem
36
inicia no nó A
Ordem de visitação
1 imprime A, visita B
Raiz 2 imprime B, visita D
Filho esquerdo 3 imprime D, volta para B
18
11/11/2021
Percurso em-ordem
37
Ordem de visitação
Filho esquerdo
Raiz
Filho direito
Percurso em-ordem
38
inicia no nó A
Ordem de visitação
1 visita B
Filho esquerdo 2 visita D
Raiz 3 imprime D, volta para B
A 5 visita F
1 12
6 imprime F, volta para E
11
10 7 imprime E, visita G
2 B C
9 8 imprime G, volta para E
3 4
RESULTADO: 9 volta para B
D E
DBFEGAC 8 10 volta para A
5
6 11 imprime A, visita C
F 7 G
12 imprime C, volta para A
19
11/11/2021
Percurso pós-ordem
39
Ordem de visitação
Filho esquerdo
Filho direito
Raiz
Percurso pós-ordem
40
inicia no nó A
Ordem de visitação
1 visita B
Filho esquerdo 2 visita D
Filho direito 3 imprime D, volta para B
Raiz 4 visita E
5 visita F
1 A 12 6 imprime F, volta para E
11 7 visita G
B 10 C
2 8 imprime G, volta para E
9
3 4 9 imprime E, volta para B
RESULTADO: D E 10 imprime B, volta para A
DFGEBCA 5 8
6 11 visita C
F 7 G 12 imprime C, volta para A e
imprime A
20
11/11/2021
Definição
É uma árvore binária
Cada nó pode ter 0, 1 ou 2 filhos
Cadanó possui da árvore possui um valor
(chave) associado a ele
Não existem valores repetidos
Esse valor determina a posição do nó na árvore
21
11/11/2021
Exemplo
raiz
50
10 99
5 30
25 45
22
11/11/2021
23
11/11/2021
40
*raiz = novo;
24
11/11/2021
Insere como
filho desse nó
folha
25
11/11/2021
Exemplo
raiz Insere o valor „40‟ como um nó folha
1 valor é menor do que 50:
visita filho da esquerda
1 50 2 valor é maior do que 10:
visita filho da direita
10 2 99 3 valor é maior do que 30:
visita filho da direita
4 valor é menor do que 45:
5 30 3 visita filho da esquerda
Fi Não existe filho da
25 45 m esquerda. Valor passa a
4
ser o filho da esquerda
de 45
40
26
11/11/2021
Exemplo
raiz
Valor procurado: 30
1 50 1 valor procurado é menor do que
50: visita filho da esquerda
10 2 99 2 valor procurado é maior do que 10:
visita filho da direita
Fim valor procurado é igual ao do nó:
5 30 retornar dados do nó
25 45
27
11/11/2021
Valor procurado: 28
1 50 1 valor procurado é menor do que 50:
visita filho da esquerda
10 2 99 2 valor procurado é maior do que 10:
visita filho da direita
3 valor procurado é menor do que 30:
5 3 30 visita filho da esquerda
4 valor procurado é maior do que 25:
25 4 45 visita filho da direita
Fim Filho da direita de 25 não existe:
NULL a busca falhou
28
11/11/2021
Continua andando
na árvore a
procura do nó a
ser removido
29
11/11/2021
10 99 10 99
ant ant
5 30 5 30
45 45
atual atual
NULL
30
11/11/2021
Remoção de um nó sem
raiz raiz
filho a esquerda:
if(atual->esq == NULL){
no2 = atual->dir;
50 free(atual); 50
return no2;
}
ant ant
10 99 10 99
5 30 5 30
atual atual
45 45
no1 34 34
32 35 no2 32
31
11/11/2021
Material Complementar
63
Vídeo Aulas
Aula 67: Árvores:
youtu.be/iLvpaqAoVD8
Aula 68: Árvores: propriedades:
youtu.be/U7IiLJlMfnU
Aula 69: Árvore Binária: Definição:
youtu.be/9WxCeWX9qDs
Aula 70: Árvore Binária: Implementação:
youtu.be/TR8ZLUKmcPc
Aula 71: Criando e destruindo uma árvore binária:
youtu.be/QAJkoJW8bEc
Aula 72: Árvore Binária: informações básicas:
youtu.be/qVnNdmx4fOA
Material Complementar
64
Vídeo Aulas
Aula 73: Percorrendo uma Árvore Binária:
youtu.be/z7XwVVYQRAA
Aula 74: Árvore Binária de Busca:
youtu.be/M7cb4HjePJk
Aula 75: Inserção em Árvore Binária de Busca:
youtu.be/8cdbmsPaR-k
Aula 76: Remoção em Árvore Binária de Busca:
youtu.be/_0Yu9BSYXGY
Aula 77: Consulta em Árvore Binária de Busca:
youtu.be/mw_wqqB48yY
32