Buscar

Aula 13 - Árvores - parte 1

Prévia do material em texto

Árvores 
SCC 202/502 – Algoritmos e Estruturas 
de Dados I 
Prof. Robson L. F. Cordeiro 
Material original editado: Prof. Thiago A. S. Pardo 
Listas e árvores 
n  Listas lineares 
n  Um nó após o outro, adjacentes 
n  Sem relações hierárquicas entre os nós, em 
geral 
n  Diversas aplicações necessitam de estruturas 
mais complexas do que as listas estudadas 
até agora 
n  Listas não lineares: árvores, grafos, etc. 
2 
Árvores 
n  Exemplo 
3 
Árvores 
n  Motivações para usá-las 
n  Inúmeros problemas podem ser representados e 
tratados por árvores 
n  Árvores admitem tratamento computacional eficiente 
quando comparadas a estruturas mais genéricas como 
os grafos (os quais, por sua vez, são mais flexíveis e, 
portanto, de mais complexa manipulação) 
n  Ótimas para busca! 
4 
Árvores 
n  Definição 
n  Uma árvore T, ou simplesmente uma árvore, é 
um conjunto finito de elementos denominados 
nós ou vértices tais que 
n  T = { } é a árvore dita vazia ou 
n  Existe um nó especial R, chamado raiz de T; os 
nós restantes constituem um único conjunto 
vazio ou são divididos em m (>=1) conjuntos não 
vazios que são as subárvores de R, sendo que 
cada subárvore é, por sua vez, uma árvore 
5 
Árvores 
B 
F G E 
C 
I 
D 
N L M 
A 
Raiz 
subárvore 
subárvore 
subárvore 
T = {A, {B, {E, {}}, {F, {L, {}}, {M, {}}}, {G, {}} }, {C, {I, {N, {}}}}, {D, {}}} 6 
Árvores 
n  Nós filhos, pais, tios, irmãos e avô 
n  Seja V o nó raiz de uma subárvore de T 
n  Os nós raízes w1, w2, ... wj das subárvores de V 
são chamados filhos de V 
n  V é chamado pai de w1, w2, ... wj 
n  Os nós w1, w2, ...wj são irmãos 
n  Se Z é filho de w1, então w2 é tio de Z e V é avô 
de Z 
7 
Árvores 
B 
F G E 
C 
I J H 
D 
K 
N L M 
A 
n  Filhos de A? Pai de F? Irmãos de H? Tios de J? Avô 
de K? Primos de G? 
8 
Árvores 
n  Grau de saída, descendente e ancestral 
n  O número de filhos de um nó é chamado grau 
(de saída) desse nó 
n  Obs.: o grau de entrada é sempre 1, exceto para o raiz, em 
que é 0. Por isso, ignora-se este tipo de grau. 
n  Se X pertence à subárvore V de T, então X é 
descendente de T e T é ancestral, ou 
antecessor, de X 
n  Válido também para quando X é a raiz de V 
9 
Árvores 
n  Nó folha e nó interior 
n  Um nó que não possui descendentes é 
chamado de nó folha, ou seja, um nó folha é 
aquele com grau de saída nulo ou zero 
n  Um nó que não é folha (isto é, possui grau de 
saída diferente de zero) é chamado nó 
interior, nó interno ou, ainda, nó intermediário 
10 
Árvores 
n  Grau de uma árvore 
n  O grau de uma árvore é o máximo entre os 
graus de seus nós 
11 
Árvores 
n  Floresta 
n  Uma floresta é um conjunto de zero ou mais 
árvores 
12 
Árvores 
n  Caminho, comprimento do caminho e caminho 
mínimo 
n  Uma sequência de nós distintos v1, v2, ..., vk, tal que 
existe sempre entre nós consecutivos (isto é, entre v1 
e v2, entre v2 e v3, ... , v(k-1) e vk) a relação "é filho 
de" ou "é pai de" é denominada um caminho na 
árvore; 
n  Caminho mínimo v1, v2, ..., vk aceita apenas um tipo de 
relação, entre “é filho de” e “é pai de”; diz-se que v1 alcança 
vk e que vk é alcançado por v1 
 
n  Um caminho de k vértices é obtido pela sequência de 
k-1 pares de vértices; o valor k-1 é o comprimento do 
caminho 13 
Árvores 
B 
F G E 
C 
I J H 
D 
K 
N L M 
A 
n  Caminhos entre A e J? 
n  Caminho mínimo? Comprimento desse caminho? 
14 
Árvores 
n  Nível (ou profundidade) e altura de um nó 
n  O nível de um nó é o número de nós (não o 
comprimento) do caminho mínimo da raiz até 
o nó 
n  O nível da raiz é 1 (alguns consideram zero) 
n  A altura de um nó V é o número de nós no 
maior caminho mínimo de V até um de seus 
descendentes 
n  As folhas têm altura 1 (alguns consideram zero) 
15 
Árvores 
n  Altura de uma árvore 
n  A altura de uma árvore T é igual ao máximo 
nível de seus nós, i.e., altura da raiz 
n  Em geral, representa-se a altura de T por h(T) 
e a altura da subárvore de raiz V por h(V) 
16 
Árvores 
B 
F G E 
C 
I J H 
D 
K 
N L M 
A 
n  Qual a altura dessa árvore? Qual o nível do nó C? 
17 
Árvores 
n  Árvore ordenada 
n  Uma árvore ordenada é aquela na qual os 
filhos de cada nó estão ordenados 
n  Assume-se ordenação da esquerda para a 
direita 
18 
Árvores 
n  Árvore ordenada 
19 
Árvores 
n  Árvore não ordenada 
20 
Árvores 
n  Árvore cheia 
n  Uma árvore de grau d é uma árvore cheia se 
possui o número máximo de nós, isto é, todos 
os nós têm número máximo de filhos (exceto 
as folhas, logicamente) e todas as folhas 
estão no mesmo nível 
21 
Árvores 
n  Exemplo de árvore cheia de grau 2 
22 
Árvores 
B 
F G E 
C 
I J H 
D 
K 
N L M 
A 
n  Considere a árvore abaixo 
n  Quantas subárvores A tem? 
23 
Árvores 
B 
F G E 
C 
I J H 
D 
K 
N L M 
A 
n  Considere a árvore abaixo 
n  Quem são os filhos de A? E os descendentes de A? 
24 
Árvores 
B 
F G E 
C 
I J H 
D 
K 
N L M 
A 
n  Considere a árvore abaixo 
n  Quais são os nós folha dessa árvore? 
25 
Árvores 
B 
F G E 
C 
I J H 
D 
K 
N L M 
A 
n  Considere a árvore abaixo 
n  Qual o grau dessa árvore? 
26 
Árvores binárias 
n  Árvores com grau 2, ou seja, cada nó pode 
ter 2 filhos, no máximo 
A 
B C 
D E 
Raiz 
F 
Terminologia: 
•  filho esquerdo 
•  filho direito 
•  informação 
27 
Árvores binárias 
n  Exercício 
n  Considerando a implementação dinâmica e 
encadeada, declare a estrutura de cada nó de 
uma árvore binária 
28 
Árvores binárias 
n  Exercício 
 
typedef char elem; 
 
typedef struct bloco { 
 elem info; 
 struct bloco *esq, *dir; 
} no; 
 
typedef struct { 
 no *raiz; 
} Arvore; 
29 
Árvores binárias 
n  Representação dinâmica e encadeada de 
uma árvore binária 
D 
A 
F B 
C G 
Raiz 
Raiz 
AB vazia 
30 
Árvores binárias 
n  Perguntas 
n  Quantos ponteiros são necessários para se 
percorrer uma árvore binária completamente? 
n  Quantos são necessários para percorrer 
qualquer tipo de árvore? 
31 
Árvores binárias 
n  Representação estática e sequencial de árvores binárias 
n  Vetor 
n  Como colocar a árvore abaixo nesse vetor? 
0 6 
32 
Árvores binárias 
n  Representação estática e sequencial de árvores binárias 
n  Vetor 
n  Como colocar a árvore abaixo nesse vetor? 
C B A 
0 6 
33 
Árvores binárias 
n  Representação estática e sequencial de árvores binárias 
n  Vetor 
n  Como colocar a árvore abaixo nesse vetor? 
C B A G D 
0 6 
34 
Árvores binárias 
n  Representação estática e sequencial de árvores binárias 
n  Vetor 
n  Como colocar a árvore abaixo nesse vetor? 
C B A G D F E 
0 6 
35 
Árvores binárias 
n  Representação estática e sequencial de árvores binárias 
n  Como saber quem é filho de quem? 
C B A G D F E 
0 6 
36 
1 2 3 4 5 
Árvores binárias 
n  Representação estática e sequencial de árvores binárias 
n  Como saber quem é filho de quem? 
n  Filhos de i são 2i+1 e 2i+2 
37 
C B A G D F E 
0 6 1 2 3 4 5 
Árvores binárias 
n  Representação estática e sequencial de árvores binárias 
n  Como saber quem é filho de quem? 
n  Filhos de i são 2i+1 e 2i+2 
n  E o pai? 38 
C B A G D F E 
0 6 1 2 3 4 5 
Árvores binárias 
n  Representação estática e sequencialde árvores binárias 
n  Como saber quem é filho de quem? 
n  Filhos de i são 2i+1 e 2i+2 
n  E o pai? (i-1) div 2 
n  div: divisão de inteiros 
39 
C B A G D F E 
0 6 1 2 3 4 5 
Árvores binárias 
n  Exercício: represente a árvore abaixo em um vetor 
n  O que essa árvore representa? 
40 
Árvores binárias 
n  Questões: considerando a representação estática e 
sequencial de árvores binárias 
n  Como fazer a inserção e remoção de elementos nessa 
representação? 
n  É mais fácil ou difícil do que na implementação 
encadeada e dinâmica? 
n  E em termos de uso da memória? 
41 
Operações em árvores binárias 
n  Algumas operações do TAD 
n  Criar árvore 
n  Verificar se a árvore está vazia 
n  Buscar um elemento 
n  Exercício para entregar na próxima aula 
§  Buscar pai de um elemento 
42

Continue navegando