Árvores e Árvores binárias prof. alexandre parra carneiro da silva [email protected]
TRANSCRIPT
![Page 2: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/2.jpg)
Roteiro Contextualização
Árvores
Árvores Binárias
![Page 3: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/3.jpg)
Roteiro Contextualização
Árvores
Árvores Binárias
![Page 4: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/4.jpg)
Contextualização Importância de estruturas unidimensionais ou
lineares (vetores e listas) é inegável.
Contudo, elas não são adequadas para representar dados que devem ser dispostos de maneira hierárquica.
Por exemplo, diretórios criados em um computador.
![Page 5: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/5.jpg)
Exemplo de estrutura hierárquica
Um exemplo de estrutura de diretório no Windows 2000
![Page 6: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/6.jpg)
Roteiro Contextualização
Árvores
Árvores Binárias
![Page 7: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/7.jpg)
Árvores
Árvore é uma estrutura de dado adequada para representar hierarquias.
Forma mais natural de definirmos uma estrutura de árvore é usando recursividade.
![Page 8: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/8.jpg)
Definições Uma árvore é composta de um conjunto finito de
nós.
Desse conjunto, há um nó r denominado de raiz, que contém zero ou mais sub-árvores, cujas raízes são ligadas diretamente a r.
Esses nós raízes das sub-árvores são ditos filhos do nó pai, r.
Nós com filhos são comumente chamados de nós internos.
Nós que não têm filhos são chamados de nós externos (folhas).
![Page 9: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/9.jpg)
Estrutura de árvores
![Page 10: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/10.jpg)
Exemplos de árvores (1/2)
A
B C D
E F
L
G H I J
M N
A
B C D
raiz da árvore
Quantas sub-árvores existem na árvore acima?Quais são as sub-árvores? Quais nós são as raízes das sub-árvores da árvore acima?Quais nós são considerados nós internos?Quais nós são considerados nós externos (folhas)?
A
![Page 11: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/11.jpg)
Exemplos de Árvores (2/2)
My Documents My Computer
3½ Floppy(A:)
Network
Apostila
Parte I Parte II Parte III
Recycle Bin
Desktop
Local Disk (C:) Local Disk (D:)
Compact Disk (E:)
Removable Disk (F:) Local Disk (I:) Local Disk (J:) Control Panel
![Page 12: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/12.jpg)
Propriedade Fundamental de Árvores
Existe um único caminho da raiz para qualquer nó da árvore.
Portanto, podemos definir a altura de todas as árvores como sendo o comprimento do caminho mais longo da raiz até uma das folhas.
Por definição, a altura de uma árvore que possui somente um elemento é zero.
![Page 13: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/13.jpg)
Exemplo de altura em árvores
A
B C D
E F
L
G H I J
M N
Qual a altura da árvore A1?
árvore A1
My Documents My Computer
3½ Floppy(A:)
Network
Apostila
Parte I Parte II Parte III
Recycle Bin
Desktop
Local Disk (C:) Local Disk (D:)
Compact Disk (E:)
Removable Disk (F:) Local Disk (I:) Local Disk (J:) Control Panel
Qual a altura da árvore A2?
árvore A2
![Page 14: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/14.jpg)
Roteiro
Contextualização
Árvores
Árvores Binárias
![Page 15: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/15.jpg)
Árvores Binárias (AB)
Uma árvore binária é constituída de um conjunto finito de nós.
Cada nó pode ter no máximo dois filhos. De maneira recursiva, podemos definir uma
árvore binária como sendo: uma árvore vazia; ou um nó raiz tendo duas sub-árvores,
identificadas como a sub-árvore da direita (sad) e a sub-árvore da esquerda (sae).
![Page 16: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/16.jpg)
Representação Esquemática de AB
Representação esquemática da definição da estrutura de AB
![Page 17: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/17.jpg)
Exemplo Árvore Binária
8
9 7
1
13 5 11
4 3
2
raiz da árvore
raiz da sae raiz da sad
![Page 18: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/18.jpg)
Notação Textual de Árvore Binária
Exemplo de árvore binária
Árvore vazia é representada por <>, e árvores não vazias por <raiz sae sad>. Com esta notação, a árvore ilustrada acima é representada por:
<a <b<><d<><>>> <c<e<><>><f<><>>> >
![Page 19: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/19.jpg)
Verificando a altura das árvores
1
6 7
3
8 9 10
4 5
2
Qual a altura da árvore binária ao lado ?
Qual a altura da árvore binária ao lado ?
Em qual nível está o nó C?
nível 0
nível 1
nível 2
nível 3
![Page 20: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/20.jpg)
Percursos em Árvores Binárias
Muitas operações em árvores binárias envolvem o percurso de todas as suas sub-árvores, executando alguma ação de tratamento em cada nó.
É comum percorrer uma árvore em uma das seguintes ordens:
Pré-Ordem: tratar raiz, percorrer sae, percorrer sad; Em-Ordem (ordem simétrica): percorrer sae, tratar
raiz, percorrer sad; Pós-Ordem: percorrer sae, percorrer sad, tratar raiz.
![Page 21: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/21.jpg)
Pré-Ordem Imprima os valores
presentes nos nós da árvore ao lado, segundo a condição pré-ordem (tratar raiz, percorrer sae, percorrer sad).
Resultado: 34, 80, 40, 43, 13, 26, 90, 75, 55, 5, 1, 17.
34
55
5
1 17
90
75
26
13
4340
80
![Page 22: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/22.jpg)
Em-Ordem (Ordem Simétrica) Imprima os valores
presentes nos nós da árvore ao lado, segundo a condição ordem simétrica (percorrer sae, tratar raiz, percorrer sad).
Resultado: 40, 80, 26, 90, 13, 43, 75, 34, 55, 1, 5, 17.
34
55
5
1 17
90
75
26
13
4340
80
![Page 23: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/23.jpg)
Pós-Ordem Imprima os valores
presentes nos nós da árvore ao lado, segundo a condição pós-ordem (percorrer sae, percorrer sad, tratar raiz).
Resultado: 40, 90, 26, 13, 75, 43, 80, 1, 17, 5, 55, 34.
34
55
5
1 17
90
75
26
13
4340
80
![Page 24: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/24.jpg)
Aplicações de Árvores Binárias (1/2)
Como árvores binárias de pesquisa (busca)
![Page 25: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/25.jpg)
Aplicações de Árvores Binárias (2/2)
Análise de expressões algébricas: prefixa, infixa e pósfixa.
Prefixa: + * + 3 6 – 4 1 5 = 32
Infixa: 3 + 6 * 4 – 1 + 5 = 32
Pósfixa: 3 6 + 4 1 - * 5 + = 32
![Page 26: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/26.jpg)
Definição da Estrutura de Árvores Binárias
Como definir o Tipo Abstrato de Dados (TAD) que representa árvores binárias?
Há duas formas: Estática; Dinamicamente;
![Page 27: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/27.jpg)
Representação Dinâmica
Criar um registro contendo os seguintes campos: info, sae e sad.
Este registro é auto-referenciado através dos campos sae e sad.
struct arv {int info;struct arv* sae;struct arv* sad;
}; typedef struct arv Arv;
![Page 28: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/28.jpg)
Registro dos nós de uma AB
infosae sad
![Page 29: Árvores e Árvores Binárias Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com](https://reader035.vdocuments.net/reader035/viewer/2022062404/552fc10c497959413d8c3a04/html5/thumbnails/29.jpg)
Principais funções sobre AB Iniciar árvores como vazias; Inserir nós na árvore; Verificar se árvore está vazia; Informar a altura da árvore; Pesquisar ocorrência de um valor no nó da
árvore; Liberar estrutura alocada para as árvores; Percorrer a árvore em pré-ordem; Percorrer a árvore em em-ordem (ordem
simétrica); Percorrer a árvore em pós-ordem.