Download - Aula 2 Arvores Handout
7/23/2019 Aula 2 Arvores Handout
http://slidepdf.com/reader/full/aula-2-arvores-handout 1/10
05/06/201
Introdução a ÁrvoresAndré Pimenta Freire
GCC109 – Algoritmos e Estrutura de Dados III Universidade Federal de Lavras
Resumo
• Definições sobre árvores
• Árvores N-árias e Árvores Binárias• Árvores Binárias de Pesquisa• Procedimentos de busca, inserção e remoção em
árvores binárias de busca• Implementação de algoritmos para busca, inserção
e remoção em árvores binárias de busca
Objetivos da aula
• Ao final desta aula, espera-se que os alunos sejamcapazes de – Explicar os principais conceitos e propriedades de árvores
n-árias, árvores binárias e árvores binárias de pesquisa – Explicar o funcionamento de procedimentos para busca,
inserção e remoção de elementos em árvores binárias depesquisa
– Implementar algoritmos em linguagem de programaçãopara efetuar operações de busca, inserção e remoção em
árvores
O que são árvores?
• Uma árvore é uma estrutura que contém umconjunto finito de um ou mais nós, sendo que umdos nós é designado como nó raiz e os demais nóssão particionados em 0 ou mais conjuntos disjuntos,onde cada um desses conjuntos é em si umaárvore, que recebe o nome de sub-árvore.
• A representação esquemática de árvores
usualmente coloca a raiz no topo, com a árvorecrescendo para baixo.
Árvores: Representação Hierárquica Árvores: algumas definições
Aresta A linha que ligadois nós da árvore
7/23/2019 Aula 2 Arvores Handout
http://slidepdf.com/reader/full/aula-2-arvores-handout 2/10
05/06/201
Árvores: algumas definições
Nó raiz
Árvores: algumas definições
Nó ancestral
A é nó ancestral de H
A é nó pai de D
Nó descendente
E é nó descendente de AD é nó filho de A
Árvores: algumas definições
Dois ou mais nós quesão nós filhos do mesmonó pai são denominados
nós irmãos.
Uma característicainerente a árvores é que
qualquer nó, exceto a
raiz, tem um único nópai.
Árvores: algumas definições
Nó folhaNó que não possui nósdescendentes (filhos).
Nó folha é tambémchamado de nó externo
da árvore.Os demais nós são nós
internos da árvore.
Árvores: algumas definições
Grau de um nóé o número de nós filhosque o mesmo possui
Obviamente que um nófolha tem grau zero.
B possuigrau 2
Árvores: algumas definições
Grau da árvoreé igual ao grau do nó demaior grau da árvore.
A árvore possui grau 4,pois D é o nó de maior
grau.
7/23/2019 Aula 2 Arvores Handout
http://slidepdf.com/reader/full/aula-2-arvores-handout 3/10
05/06/201
Árvores: algumas definições
Nível de um nóé o número de nós
existentes nocaminho entre a raize o próprio nó.
A raiz tem nível 0.
Árvores: algumas definições
Altura de um nóé o comprim ento do
caminho mais longo destenó até um nó folha.
A altura de uma árvore
é a altura do nó raiz.
Árvores Binárias
São um caso especial de árvore;
Tem como principio que cada nóda árvore tem no máximo dois nósfilhos;
Distingue-se o nó filho à esquerdae o nó filho à direita e,conseqüentemente, a subárvore àesquerda e a subárvore à direita.
Transformação de uma árvoren-ária em uma árvore binária
1. A raiz da árvore n-ária será a raiz da árvore binária.
2. O nó filho mais à esquerda da raiz da árvore n-ária será o nófilho V à esquerda da raiz da árvore binária. Cada nó irmão deV, da esquerda para a direita, será o nó filho à direita do nóirmão da esquerda, até que todos os nós filhos da raiz daárvore (subárvore) n-ária já tenham sido incluídos na árvorebinária em construção.
Transformação de uma árvore n-áriaem uma árvore binária
Árvore n-ária
A
B
Árvore binária
Transformação de uma árvore n-áriaem uma árvore binária
Árvore n-ária
A
B
C
D
Árvore binária
7/23/2019 Aula 2 Arvores Handout
http://slidepdf.com/reader/full/aula-2-arvores-handout 4/10
05/06/201
Transformação de uma árvore n-áriaem uma árvore binária
Árvore n-ária
A
B
C
D
E
Árvore binária
Transformação de uma árvore n-áriaem uma árvore binária
Árvore n-ária
A
BC
D
E
F
Árvore binária
Transformação de uma árvore n-áriaem uma árvore binária
Árvore n-ária
A
B
C
D
E
F
L
Árvore binária
Transformação de uma árvore n-áriaem uma árvore binária
Árvore n-ária
A
B
C
D
E
F
L G
Árvore binária
Transformação de uma árvore n-áriaem uma árvore binária
Árvore n-ária
AB
C
D
E
F
L G
H
Árvore binária
Transformação de uma árvore n-áriaem uma árvore binária
Árvore n-ária
AB
C
D
E
F
L G
H
I
Árvore binária
7/23/2019 Aula 2 Arvores Handout
http://slidepdf.com/reader/full/aula-2-arvores-handout 5/10
05/06/201
Transformação de uma árvore n-áriaem uma árvore binária
Árvore n-ária
A
BC
D
E
F
L G
H
I
J
Árvore binária
Transformação de uma árvore n-áriaem uma árvore binária
Árvore n-ária
A
BC
D
E
F
L G
H
I
JM
Árvore binária
Transformação de uma árvore n-áriaem uma árvore binária
Árvore n-ária
A
B
C
D
E
F
L G
H
I
JM
NÁrvore binária
Árvores Binárias de Pesquisaou Árvores Binárias de Busca
Todo nó interno contém um registro, e, para cada nó, aseguinte propriedade é verdadeira:
registros com chaves menores estão na subárvore esquerda
registros com chaves maiores estão na subárvore direita.
Árvores Binárias de BuscaOperações básicas em árvores
binárias
Pesquisa de um elemento na árvore;
Inserção de novos elementos na árvore;
Remoção de um elemento da árvore;
7/23/2019 Aula 2 Arvores Handout
http://slidepdf.com/reader/full/aula-2-arvores-handout 6/10
05/06/201
Pesquisa de um elemento naárvore
Para encontrar um registro com uma chave x
Compare-a com a chave que está na raiz:Se x < raiz, vá para a subárvore esquerda;Se x > raiz, vá para a subárvore direita.
Repita o processo recursivamente.
Pesquisa de um elemento naárvore
7
3
1 5
4 6
10
14
13
Procurar pelo elemento 4...
Pesquisa de um elemento naárvore
A cada passo, garante-se que nenhuma outraparte da árvore contém a chave sendobuscada.
O procedimento termina quando: – O registro com a chave x é encontrado; – O nó folha é atingido.
Inserção de novos elementos na árvore
Para inserir um registro com a chave x:
Executa-se o procedimento de pesquisa descritoanteriormente;
Se a chave x for encontrada, nenhuma inserção éefetuada;
Caso contrário, o registro é inserido como uma
subárvore do nó folha onde ele deveria ter sidoencontrado.
Inserção de novos elementos na árvore
É necessário saber por qual nó se chegou a NULL – Será o pai do novo nó, que sempre será
uma folha.
7
3
1 5
4 6
10
14
13
7
3
1 5
4 6
10
14
13
9
9+
Ponto deinserção
Remoção de um elemento da árvore
• Existem 3 casos possíveis:
1. O elemento a remover não possuir subárvores;
7
3
1 5
4 6
10
14
13
7/23/2019 Aula 2 Arvores Handout
http://slidepdf.com/reader/full/aula-2-arvores-handout 7/10
05/06/201
Remoção de um elemento da árvore
Existem 3 casos possíveis:
1. O elemento a remover não possuir subárvores;
2. O elemento a remover só possuir umadas subárvores (esquerdaou direita);
7
3
1 5
4 6
10
14
13
Remoção de um elemento da árvore
Existem 3 casos possíveis:
1. O elemento a remover não possuir subárvores;
2. O elemento a remover só possuir umadas subárvores (esquerdaou direita);
3. O elemento a removerpossuir subárvore direita eesquerda;
7
3
1 5
4 6
10
14
13
Remoção de um elemento da árvore
1. O elemento a remover não possuirsubárvores;
Procedimento
- remover o elemento (por oapontador a null);
- ajustar os ponteiros (colocar oapontador que está a apontarpara o elemento a remover aapontar para null).
7
3
1 5
4 6
10
14
13
Remoção de um elemento da árvore
1. O elemento a remover não possuirsubárvores;
7
3
1 5
4 6
10
14
13
7
3
5
4 6
10
14
13
Remoção de um elemento da árvore
2. O elemento a remover só possuir uma dassubárvores (esquerda ou direita);
Procedimento
- ajustar os ponteiros (colocar oapontador que está a apontarpara o elemento a remover aapontar para o elemento aseguir);
- remover o elemento (por oapontador a null)
7
3
1 5
4 6
10
14
13
Remoção de um elemento da árvore
2. O elemento a remover só possuir uma dassubárvores (esquerda ou direita);
7
3
1 5
4 6
10
14
13
7
3
1 5
4 6
14
13
7/23/2019 Aula 2 Arvores Handout
http://slidepdf.com/reader/full/aula-2-arvores-handout 8/10
05/06/201
Remoção de um elemento da árvore
3. O elemento a remover possuir subárvore direita eesquerda.
7
3
1 5
4 6
10
14
13
Temos duas maneiras diferentes detrabalhar:
Usando o maior nó da sub-árvoreà esquerda;
Usando o menor nó da sub-árvoreà direita;
Remoção de um elemento da árvore
Procedimento
- procurar o maior elementoda sub-árvore esquerda, queserá o elemento a substituiro elemento a ser removido;
- substituir o elemento a serremovido pelo elementoprocurado anteriormente;
- remover o nó onde estava omaior elemento da sub-árvore esquerda
7
3
1 5
4 6
10
14
13
Usando o maior nó da sub-árvore à esquerda;
Elemento aser removido
Maiorelemento
Remoção de um elemento da árvore
Procedimento
- procurar o maior elementoda sub-árvore esquerda, queserá o elemento a substituiro elemento a ser removido;
- substituir o elemento a serremovido pelo elementoprocurado anteriormente;
- remover o nó onde estava omaior elemento da sub-árvore esquerda
7
1
1 5
4 6
10
14
13
Usando o maior nó da sub-árvore à esquerda;
Remoção de um elemento da árvore
7
3
1 5
4 6
10
14
13
7
1
5
4 6
10
14
13
Usando o maior nó da sub-árvore à esquerda;
Remoção de um elemento da árvore
Procedimento
- procurar o menor elementoda sub-árvore direita, queserá o elemento a substituiro elemento a ser removido;
- substituir o elemento a serremovido pelo elementoprocurado anteriormente;
- remover o nó onde estava omenor elemento da sub-árvore direita.
7
3
1 5
4 6
10
14
13
Usando o menor nó da sub-árvore à direita
Elemento aser removido
Menorelemento
Remoção de um elemento da árvore
Procedimento
- procurar o menor elementoda sub-árvore direita, queserá o elemento a substituiro elemento a ser removido;
- substituir o elemento a serremovido pelo elementoprocurado anteriormente;
- remover o nó onde estava omenor elemento da sub-árvore direita
7
4
1 5
4 6
10
14
13
Usando o menor nó da sub-árvore à direita
7/23/2019 Aula 2 Arvores Handout
http://slidepdf.com/reader/full/aula-2-arvores-handout 9/10
05/06/201
Remoção de um elemento da árvore
7
3
1 5
4 6
10
14
13
Usando o menor nó da sub-árvore à direita
7
4
51
6
10
14
13
Algoritmos para Árvores Binárias de Busca
Será implementado um tipo abstrato de dados‘Dicionário’, contendo as operações:
Inicializa
Pesquisa
Insere
Exclui.
A estrutura de dados árvore binária de pesquisa seráutilizada para implementar esse tipo abstrato dedados.
(Fonte: Nivio Ziviani. Projeto de Algoritmos com Implementações em Pascal e C. 3a. Edição).
Implementação de árvore - estática
Armazenar os nós, por nível, em um vetor
Se um nó está na posição i, seus filhos diretosestão nas posições 2i e 2i+1
• Vantagem: espaço só para armazenar conteúdo; ligações
implícitas• Desvantagem: espaços vagos se árvore não é completa porníveis, ou se sofrer eliminação
Implementação de árvore - dinâmica
Para qualquer árvore, o nó é do tipo
Exemplo – Estrutura dicionário Operações: Inicializa e Pesquisa
7/23/2019 Aula 2 Arvores Handout
http://slidepdf.com/reader/full/aula-2-arvores-handout 10/10
05/06/201
Operações: Insere Operações: Remover
Int remover(Apontador *p, Registro x) {
Apontador aux;if (*p==NULL)
return 0; //não achou e não removeuelse if (x.Chave < (*p)->Reg.Chave)
return(remover(&(*p)->esq, x));else if (x.Chave > (*p)->Reg.chave)
return(remover(&(*p)->dir, x));else { //remover
//caso 1: o nó não tem filhos
if (((*p)->esq == NULL) && ((*p)->dir == NULL)) {free(*p);*p = NULL; //anula subárvore de onde veioreturn 1;
}
Operações: Excluir
//caso 2a: só há o filho direito
else if ((*p)->esq==NULL) {aux=*p;*p=(*p)->dir; //faz ligação com filho a direitafree(aux);return 1;
}
//caso 2b: só há o filho esquerdo
else if ((*p)->dir == NULL) {aux = *p;*p = (*p)->esq; //faz ligação com filho a esquerda
free(aux);return 1;
}
Operações: Excluir
//caso 3: há os dois filhos
else { //substitui pelo maior da subárvore esquerda(*p)->Reg.chave= busca_maior((*p)->esq);return(remover(&(*p)->esq, (*p)->Reg));
}}
}
Registro busca_maior(Apontador p) {
while (p->dir != NULL)p = p->dir;
return (p->Reg);}
Objetivos da aula
• Ao final desta aula, espera-se que os alunos sejamcapazes de – Explicar os principais conceitos e propriedades de árvores
n-árias, árvores binárias e árvores binárias de pesquisa – Explicar o funcionamento de procedimentos para busca,
inserção e remoção de elementos em árvores binárias depesquisa
– Implementar algoritmos em linguagem de programaçãopara efetuar operações de busca, inserção e remoção emárvores
Referências Utilizadas
• Livro:
ZIVIANI, Nivio, Projeto de algoritmos comimplementação em Pascal e C, 3a. edição,Editora Thomson, 2011
Baseado nos slides da Profa. Lívia Naiara de Andrade e da Profa. Sandra Aluisio (ICMC-USP)