aula 2 arvores handout

10
05/06/2013 1 Introdução a Árvores André 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 sejam capazes 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 de pesquisa  Implementar algoritmos em linguagem de programação para efetuar operações de busca, inserção e remoção em árvores O que são árvores? Uma árvore é uma estrutura que contém um conjunto finito de um ou mais nós, sendo que um dos nós é designado como nó raiz  e os demais nós sã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 árvore crescendo para baixo.  Árvores: Representação Hierárquica Árvores: algumas definições Aresta  A l inha que l iga dois nós da árvore

Upload: julio-cesar

Post on 13-Feb-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

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)