Buscar

aula_arvores

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 41 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 41 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 41 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Introdução a Árvore
Valéria de Carvalho Santos
valeriac@icmc.usp.br
Departamento de Estatística, Matemática Aplicada e Computação
Instituto de Geociências e Ciências Exatas
Universidade Estadual Paulista “Júlio de Mesquita”
26 de abril de 2013
Introdução
Introdução
• Lista lineares: organização linear dos dados, onde sua 
propriedade básica é a relação sequencial mantida entre seus 
elementos
• Um elemento da lista está após o outro
• Não há relação hierárquica
x1 x2 x3 ... xi- xi xi+1 ... xn
Introdução
Introdução
• Estruturas lineares:
• Listas
• Pilhas
• Filas
• Listas encadeadas circulares
• Listas duplamente encadeadas
Introdução
Introdução
• Listas não-lineares
• Estrutura em grafos
• Estrutura em árvores
• Estrutura em árvore: organização dos dados de forma não-
linear, mantendo um relacionamento hierárquico entre os
elementos
D
B F
A C
R1
GEé ABB
não é ABB
4
D
B F
A C GE
Introdução
Introdução
• Exemplos de estrutura em árvore
• Árvore genealógica
• Organograma de uma empresa
5
Introdução
Introdução
• Motivação/Vantagens:
• Representatividade no relacionamento entre os dados
• Favorece a extração de informação de forma eficiente
• Quem são os filhos de Maria?
• Onde está o capítulo de estrutura em árvores?
• Quem é o diretor da seção de financeiro?
6
Definição
Fundamentos
• Uma árvore enraizada é um conjunto finito de elementos 
denominados nós ou vértices tais que:
• T = Ø, a árvore é dita vazia, ou
• T = {r} ᴜ {T1} ᴜ {T2} ᴜ {T3} ᴜ ... ᴜ {Tn}, n > 0.
• A definição de árvore é recursiva
• r é a raiz da árvore
• Cada conjunto T1, T2, T3, ... , Tn disjuntos são subárvores de r
•Uma floresta é um conjunto de árvores
7
Terminologias
Fundamentos
• Nós filhos, pais, tios, irmãos e avôs
• Seja r o nó raiz de uma subárvore T
• Os nós raízes w1, w2, ..., wj das subárvores de r são 
chamados filhos de r
• O nó r é chamado de pai de w1, w2, ..., wj
• Os nós w1, w2, ..., wj são ditos irmãos
• Se o nó z é filho de w1, então w2 é tio de z e r é avô de z
8
r
w2
z
w1
Terminologias
Fundamentos
• Grau de saída: o número de filhos de um nó é chamado de grau 
desse nó
• Descendente: o grau de uma árvore é o máximo entre os graus de 
seus nós
• Ancestral: se o nó x pertence à uma subárvore do nó v, então x é 
descendente de v e v é ancestral
9
Terminologias
Fundamentos
• Nó folha: 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ó interior: um nó que não é folha é chamado de nó interior, nó 
interno, ou ainda, nó intermediário
10
Terminologias
Fundamentos
11
• Caminho: uma sequência de nós distintos w1, w2, ..., wj, tal que 
existe sempre entre nós consecutivos a relação “é filho de” ou é 
“pai de”, é denominada um caminho na árvore: diz-se que w1
alcança wj e que wj é alcançado por w1.
• Comprimento do caminho: um caminho de k vértices é obtido 
pela sequência de k-1 pares; o valor k-1 é o comprimento do 
caminho
Terminologias
Fundamentos
12
• Nível (ou profundidade) e altura de um nó
• O nível de um nó é o tamanho do caminho entre a raiz da 
árvore até esse nó
• A raiz tem nível 0
• A altura de um nó é o tamanho do maior caminho entre este 
nó e uma folha descendente desse nó
• As folhas têm altura 0
• A altura da raiz equivale a altura da árvore.
Exemplo
Fundamentos
13
Milton
Fábio Fernando Rodrigo
Mariana Valéria HelenaAna
Daiane
Lara
Exemplo
Fundamentos
14
Milton
Fábio Fernando Rodrigo
Mariana Valéria HelenaAna
Daiane
Lara
• Quantas subárvores tem o nó “Milton”? 
Exemplo
Fundamentos
15
Milton
Fábio Fernando Rodrigo
Mariana Valéria HelenaAna
Daiane
Lara
• Quantas subárvores tem o nó “Milton”? 3 subárvores
Exemplo
Fundamentos
16
Milton
Fábio Fernando Rodrigo
Mariana Valéria HelenaAna
Daiane
Lara
• Quantas subárvores tem o nó “Milton”? 3 subárvores
• Quem são os filhos de “Fabio”? 
Exemplo
Fundamentos
17
Milton
Fábio Fernando Rodrigo
Mariana Valéria HelenaAna
Daiane
Lara
• Quantas subárvores tem o nó “Milton”? 3 subárvores
• Quem são os filhos de “Fabio”? Mariana e Valéria
Exemplo
Fundamentos
18
Milton
Fábio Fernando Rodrigo
Mariana Valéria HelenaAna
Daiane
Lara
• Quantas subárvores tem o nó “Milton”? 3 subárvores
• Quem são os filhos de “Fabio”? Mariana e Valéria
• Quem são os nós folhas? 
Exemplo
Fundamentos
19
Milton
Fábio Fernando Rodrigo
Mariana Valéria HelenaAna
Daiane
Lara
• Quantas subárvores tem o nó “Milton”? 3 subárvores
• Quem são os filhos de “Fabio”? Mariana e Valéria
• Quem são os nós folhas? Mariana, Valéria, Ana e Lara
Exemplo
Fundamentos
20
Milton
Fábio Fernando Rodrigo
Mariana Valéria HelenaAna
Daiane
Lara
• Quantas subárvores tem o nó “Milton”? 3 subárvores
• Quem são os filhos de “Fabio”? Mariana e Valéria
• Quem são os nós folhas? Mariana, Valéria, Ana e Lara
• Quem são os descendentes de “Rodrigo”? 
Exemplo
Fundamentos
21
Milton
Fábio Fernando Rodrigo
Mariana Valéria HelenaAna
Daiane
Lara
• Quantas subárvores tem o nó “Milton”? 3 subárvores
• Quem são os filhos de “Fabio”? Mariana e Valéria
• Quem são os nós folhas? Mariana, Valéria, Ana e Lara
• Quem são os descendentes de “Rodrigo”? Helena, Daiane e Lara
Exemplo
Fundamentos
22
Milton
Fábio Fernando Rodrigo
Mariana Valéria HelenaAna
Daiane
Lara
• Quantas subárvores tem o nó “Milton”? 3 subárvores
• Quem são os filhos de “Fabio”? Mariana e Valéria
• Quem são os nós folhas? Mariana, Valéria, Ana e Lara
• Quem são os descendentes de “Rodrigo”? Helena, Daiane e Lara
• Qual o grau dessa árvore? 
Exemplo
Fundamentos
23
Milton
Fábio Fernando Rodrigo
Mariana Valéria HelenaAna
Daiane
Lara
• Quantas subárvores tem o nó “Milton”? 3 subárvores
• Quem são os filhos de “Fabio”? Mariana e Valéria
• Quem são os nós folhas? Mariana, Valéria, Ana e Lara
• Quem são os descendentes de “Rodrigo”? Helena, Daiane e Lara
• Qual o grau dessa árvore? 3
Exemplo
Fundamentos
24
Milton
Fábio Fernando Rodrigo
Mariana Valéria HelenaAna
Daiane
Lara
• Quantas subárvores tem o nó “Milton”? 3 subárvores
• Quem são os filhos de “Fabio”? Mariana e Valéria
• Quem são os nós folhas? Mariana, Valéria, Ana e Lara
• Quem são os descendentes de “Rodrigo”? Helena, Daiane e Lara
• Qual o grau dessa árvore? 3
• Qual a altura da árvore? 
Exemplo
Fundamentos
25
Milton
Fábio Fernando Rodrigo
Mariana Valéria HelenaAna
Daiane
Lara
• Quantas subárvores tem o nó “Milton”? 3 subárvores
• Quem são os filhos de “Fabio”? Mariana e Valéria
• Quem são os nós folhas? Mariana, Valéria, Ana e Lara
• Quem são os descendentes de “Rodrigo”? Helena, Daiane e Lara
• Qual o grau dessa árvore? 3
• Qual a altura da árvore? 4
Árvores Binárias
Árvores binárias
26
• Uma Arvore Binária T é um conjunto finito de elementos, 
denominados nós ou vértices, tal que:
• T = Ø, a árvore binária é dita vazia; ou
• T = {r} ᴜ {Te} ᴜ {Td}.
• T contém um nó especial r, chamado de raiz, e os demais 
nós podem ser subdivididos em dois subconjuntos distintos Te
e Td, os quais também são árvores binárias
•Te: subárvore à esquerda de T
•Td: subárvore à direita de T
Tipos de Árvores Binária
Árvores binárias
27
• Árvore estritamente binária
• Todos os nós possuem 0 ou 2 filhos
• Nós interiores sempre possuem 2 filhos
Tipos de Árvores Binária
Árvores binárias
28
• Árvore Binária Completa
• Se o nó v tem alguma subárvore vazia, então v está no último 
ou penúltimo nível da árvore
Tipos de Árvores Binária
Árvores binárias
29
• Árvore Binária Cheia
• Se o nó v tem alguma subárvore vazia, então v está no último 
nível da árvore
• Obs.: uma árvore binária cheia é uma árvore binária completa 
e estritamente binária
Árvore Binária Balanceada
Árvores binárias
30
• Árvore Binária Balanceada
• Para cada nó, as alturas de suas duas sub-árvores diferem 
de, no máximo, 1.
Representação
Árvores binárias
31
• Representaçãoestática
• Para um vetor indexado a partir da posição 1, se um nó está na 
posição i, seus filhos diretos estão nas posições
• 2i : filho da esquerda
• 2i+1: filho da direita
Representação
Árvores binárias
32
• Representação dinâmica
struct ITEM{
int valor; 
};
struct NO{
ITEM item;
struct NO *fesq;
struct NO *fdir;
};
struct ARVORE_BINARIA{
NO *raiz;
};
Estática x Dinâmica
Árvores binárias
33
Vantagens Desvantagens
Estática
Fácil 
implementação
Mau
aproveitamento de 
memória
Dinâmica Fácil manipulação
Gasto extra de 
memória para os 
ponteiros
Operações básicas em Árvores Binárias
Árvores binárias
34
• Criar árvore
• Verificar se a árvore está vazia
• Imprimir elementos da árvore
• Determinar a altura da árvore
• Buscar um elemento
• Buscar pai de um elemento
• Inserir elemento à esquerda de outro elemento
• Inserir elemento à direita de outro elemento
• Finalizar árvore
Operações básicas em Árvores Binárias
Árvores binárias
35
void criar(ARVORE_BINARIA *arv) {
arv->raiz = NULL;
}
NO *criar_raiz(ARVORE_BINARIA *arv, ITEM *item){
arv->raiz = (NO*)malloc(sizeof(NO));
if (arv->raiz != NULL) {
arv->raiz->fesq = NULL;
arv->raiz->fdir = NULL;
arv->raiz->item = *item;
}
return arv->raiz;
}
Operações básicas em Árvores Binárias
Árvores binárias
36
NO *inserir_direita(NO *no, ITEM *item) {
if (no != NULL) {
no->fdir = (NO*)malloc(sizeof(NO));
no->fdir->fesq = NULL;
no->fdir->fdir = NULL;
no->fdir->item = *item;
return no->fdir;
}
return NULL;
}
Operações básicas em Árvores Binárias
Árvores binárias
37
NO *inserir_esquerda(NO *no, ITEM *item) {
if (no != NULL) {
no->fesq = (NO*)malloc(sizeof(NO));
no->fesq->fesq = NULL;
no->fesq->fdir = NULL;
no->fesq->item= *item;
return no->fesq;
}
return NULL;
}
Percurso em Árvores Binárias
Árvores binárias
38
• Percorrer uma árvore binária “visitando” cada nó uma única vez
• “Visitar” um nó pode ser:
• Imprimir seu valor armazenado
• Alterar o valor
• etc
• Não existe um único percurso para árvores (binárias ou não): 
diferentes percursos podem ser realizados, dependendo da 
aplicação.
• 3 percursos básicos: pré-ordem, em-ordem e pós-ordem
Percurso em Árvores Binárias
Árvores binárias
39
• Pré-ordem
• Visita o nó raiz
• Percorre a subárvore esquerda
• Percorre a subárvore direita
Resultado: ABDGCEHIF
Percurso em Árvores Binárias
Árvores binárias
40
• Em-ordem
• Percorre a subárvore esquerda
• Visita o nó raiz
• Percorre a subárvore direita
Resultado: DGBAHEICF
Percurso em Árvores Binárias
Árvores binárias
41
• Pós-ordem
• Percorre a subárvore esquerda
• Percorre a subárvore direita
• Visita o nó raiz
Resultado: GDBHIEFCA

Continue navegando