Вы находитесь на странице: 1из 10

05/06/2013

Resumo
Introduo a rvores
Andr Pimenta Freire

GCC109 Algoritmos e Estrutura de Dados III

Universidade Federal de Lavras

Definies sobre rvores


rvores N-rias e rvores Binrias
rvores Binrias de Pesquisa
Procedimentos de busca, insero e remoo em
rvores binrias de busca
Implementao de algoritmos para busca, insero
e remoo em rvores binrias de busca

Objetivos da aula

O que so rvores?

Ao final desta aula, espera-se que os alunos sejam


capazes de

Uma rvore uma estrutura que contm um


conjunto finito de um ou mais ns, sendo que um
dos ns designado como n raiz e os demais ns
so particionados em 0 ou mais conjuntos disjuntos,
onde cada um desses conjuntos em si uma
rvore, que recebe o nome de sub-rvore.

Explicar os principais conceitos e propriedades de rvores


n-rias, rvores binrias e rvores binrias de pesquisa
Explicar o funcionamento de procedimentos para busca,
insero e remoo de elementos em rvores binrias de
pesquisa
Implementar algoritmos em linguagem de programao
para efetuar operaes de busca, insero e remoo em
rvores

rvores: Representao Hierrquica

A representao
esquemtica
de
rvores
usualmente coloca a raiz no topo, com a rvore
crescendo para baixo.

rvores: algumas definies


Aresta
A linha que liga
dois ns da rvore

05/06/2013

rvores: algumas definies

rvores: algumas definies


N raiz

N ancestral
A n ancestral de H
A n pai de D

N descendente
E n descendente de A
D n filho de A

rvores: algumas definies


Dois ou mais ns que
so ns filhos do mesmo
n pai so denominados
ns irmos.

Uma caracterstica
inerente a rvores que
qualquer n, exceto a
raiz, tem um nico n
pai.

rvores: algumas definies

rvores: algumas definies


N folha
N que no possui ns
descendentes (filhos).

N folha tambm
chamado de n externo
da rvore.
Os demais ns so ns
internos da rvore.

rvores: algumas definies

Grau de um n

Grau da rvore

o nmero de ns filhos
que o mesmo possui

igual ao grau do n de
maior grau da rvore.

Obviamente que um n
folha tem grau zero.

A rvore possui grau 4,


pois D o n de maior
grau.

B possui
grau 2

05/06/2013

rvores: algumas definies

rvores: algumas definies

Nvel de um n

Altura de um n

o nmero de ns
existentes no
caminho entre a raiz
e o prprio n.

o comprimento do
caminho mais longo deste
n at um n folha.

A altura de uma rvore


a altura do n raiz.
A raiz tem nvel 0.

Transformao de uma rvore


n-ria em uma rvore binria

rvores Binrias

1. A raiz da rvore n-ria ser a raiz da rvore binria.

So um caso especial de rvore;

2. O n filho mais esquerda da raiz da rvore n-ria ser o n


filho V esquerda da raiz da rvore binria. Cada n irmo de
V, da esquerda para a direita, ser o n filho direita do n
irmo da esquerda, at que todos os ns filhos da raiz da
rvore (subrvore) n-ria j tenham sido includos na rvore
binria em construo.

Tem como principio que cada n


da rvore tem no mximo dois ns
filhos;
Distingue-se o n filho esquerda
e o n filho direita e,
conseqentemente, a subrvore
esquerda e a subrvore direita.

Transformao de uma rvore n-ria


em uma rvore binria

Transformao de uma rvore n-ria


em uma rvore binria
A

C
D

rvore binria
rvore binria
rvore n-ria
rvore n-ria

05/06/2013

Transformao de uma rvore n-ria


em uma rvore binria

Transformao de uma rvore n-ria


em uma rvore binria
A

A
B

B
E

C
F

rvore binria

rvore binria
rvore n-ria
rvore n-ria

Transformao de uma rvore n-ria


em uma rvore binria

Transformao de uma rvore n-ria


em uma rvore binria

C
F

C
F

G
rvore binria

rvore binria

rvore n-ria

rvore n-ria

Transformao de uma rvore n-ria


em uma rvore binria

Transformao de uma rvore n-ria


em uma rvore binria

B
E

B
E

C
F

C
F

D
L

D
G
H

rvore binria
rvore n-ria

rvore n-ria

rvore binria

05/06/2013

Transformao de uma rvore n-ria


em uma rvore binria

Transformao de uma rvore n-ria


em uma rvore binria

C
F

H
rvore n-ria

H
I

rvore n-ria

rvore binria

rvore binria

rvores Binrias de Pesquisa


ou rvores Binrias de Busca

Transformao de uma rvore n-ria


em uma rvore binria
A

Todo n interno contm um registro, e, para cada n, a


seguinte propriedade verdadeira:

B
E

C
F

registros com chaves menores esto na subrvore esquerda


registros com chaves maiores esto na subrvore direita.

G
H
I
M

rvore n-ria

rvore binria

J
N

Operaes bsicas em rvores


binrias

rvores Binrias de Busca

Pesquisa de um elemento na rvore;

Insero de novos elementos na rvore;

Remoo de um elemento da rvore;

05/06/2013

Pesquisa de um elemento na
rvore

Pesquisa de um elemento na
rvore

Para encontrar um registro com uma chave x

Procurar pelo elemento 4...

Compare-a com a chave que est na raiz:

Se x < raiz, v para a subrvore esquerda;


Se x > raiz, v para a subrvore direita.

10

3
1

14

Repita o processo recursivamente.


4

Pesquisa de um elemento na
rvore

13

Insero de novos elementos na rvore


Para inserir um registro com a chave x:

A cada passo, garante-se que nenhuma outra


parte da rvore contm a chave sendo
buscada.

Executa-se o procedimento de pesquisa descrito


anteriormente;
Se a chave x for encontrada, nenhuma insero
efetuada;

O procedimento termina quando:

O registro com a chave x encontrado;


O n folha atingido.

Caso contrrio, o registro inserido como uma


subrvore do n folha onde ele deveria ter sido
encontrado.

Insero de novos elementos na rvore


necessrio saber por qual n se chegou a NULL

Ser o pai do novo n, que sempre ser


uma folha.

+ 9

10
14

5
4

Existem 3 casos possveis:


Ponto de
insero

1. O elemento a remover no possuir subrvores;

7
3

Remoo de um elemento da rvore

13

7
10

3
1

5
4

14
13

10

3
1

14

5
4

13

05/06/2013

Remoo de um elemento da rvore


Existem 3 casos possveis:

Remoo de um elemento da rvore


Existem 3 casos possveis:

1. O elemento a remover no possuir subrvores;

1. O elemento a remover no possuir subrvores;

2. O elemento a remover s possuir uma


das subrvores (esquerda
7
ou direita);

2. O elemento a remover s possuir uma


das subrvores (esquerda
7
ou direita);

10
14

5
4

3. O elemento a remover
possuir subrvore direita e
esquerda;

10

14

13

13

Remoo de um elemento da rvore

Remoo de um elemento da rvore

1.

1.

O elemento
subrvores;

14

5
6

no

possuir

O elemento
subrvores;

13

- ajustar os ponteiros (colocar o


apontador que est a apontar
para o elemento a remover a
apontar para null).

remover

no

possuir

- remover o elemento (por o


apontador a null);

10

remover

Procedimento

7
3

10

3
1

14

5
4

10

14

13

13

Remoo de um elemento da rvore

Remoo de um elemento da rvore

2. O elemento a remover s possuir uma das


subrvores (esquerda ou direita);

2. O elemento a remover s possuir uma das


subrvores (esquerda ou direita);

Procedimento

7
10

3
1

14

5
4

13

- ajustar os ponteiros (colocar o


apontador que est a apontar
para o elemento a remover a
apontar para o elemento a
seguir);
- remover o elemento (por o
apontador a null)

7
10

3
1

14

5
4

13

14
13

5
4

05/06/2013

Remoo de um elemento da rvore

Remoo de um elemento da rvore


Usando o maior n da sub-rvore esquerda;

3. O elemento a remover possuir subrvore direita e


esquerda.
7

Temos duas maneiras diferentes de


trabalhar:

Usando o maior n da sub-rvore


esquerda;
Usando o menor n da sub-rvore
direita;

Procedimento
Elemento a
ser removido

14

1
Maior
elemento

10

10

13

Remoo de um elemento da rvore

14

5
4

13

- procurar o maior elemento


da sub-rvore esquerda, que
ser o elemento a substituir
o elemento a ser removido;
- substituir o elemento a ser
removido pelo elemento
procurado anteriormente;
- remover o n onde estava o
maior elemento da subrvore esquerda

Remoo de um elemento da rvore

Usando o maior n da sub-rvore esquerda;

Usando o maior n da sub-rvore esquerda;

Procedimento

7
10

1
1

14

5
4

13

- procurar o maior elemento


da sub-rvore esquerda, que
ser o elemento a substituir
o elemento a ser removido;
- substituir o elemento a ser
removido pelo elemento
procurado anteriormente;
- remover o n onde estava o
maior elemento da subrvore esquerda

Remoo de um elemento da rvore

7
10

3
1

14

5
4

13

10

3
1

14

5
4
Menor
elemento

13

- procurar o menor elemento


da sub-rvore direita, que
ser o elemento a substituir
o elemento a ser removido;
- substituir o elemento a ser
removido pelo elemento
procurado anteriormente;
- remover o n onde estava o
menor elemento da subrvore direita.

13

Usando o menor n da sub-rvore direita

Procedimento

14

Remoo de um elemento da rvore

Usando o menor n da sub-rvore direita


Elemento a
ser removido

10

Procedimento

7
10

4
1

14

5
4

13

- procurar o menor elemento


da sub-rvore direita, que
ser o elemento a substituir
o elemento a ser removido;
- substituir o elemento a ser
removido pelo elemento
procurado anteriormente;
- remover o n onde estava o
menor elemento da subrvore direita

05/06/2013

Algoritmos para
rvores Binrias de Busca

Remoo de um elemento da rvore

Ser implementado um tipo abstrato de dados


Dicionrio, contendo as operaes:

Usando o menor n da sub-rvore direita

7
10

3
1

14

5
4

10

4
1

13

14

5
6

13

Inicializa

Pesquisa

Insere

Exclui.

A estrutura de dados rvore binria de pesquisa ser


utilizada para implementar esse tipo abstrato de
dados.
(Fonte: Nivio Ziviani. Projeto de Algoritmos com Implementaes em Pascal e C. 3a. Edio).

Implementao de rvore - esttica


Armazenar os ns, por nvel, em um vetor

Implementao de rvore - dinmica


Para qualquer rvore, o n do tipo

Se um n est na posio i, seus filhos diretos


esto nas posies 2i e 2i+1

Vantagem: espao s para armazenar contedo; ligaes


implcitas
Desvantagem: espaos vagos se rvore no completa por
nveis, ou se sofrer eliminao

Exemplo Estrutura dicionrio

Operaes: Inicializa e Pesquisa

05/06/2013

Operaes: Insere

Operaes: Remover
Int remover(Apontador *p, Registro x) {
Apontador aux;
if (*p==NULL)
return 0; //no achou e no removeu
else 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 no tem filhos
if (((*p)->esq == NULL) && ((*p)->dir == NULL)) {
free(*p);
*p = NULL; //anula subrvore de onde veio
return 1;
}

Operaes: Excluir
//caso 2a: s h o filho direito
else if ((*p)->esq==NULL) {
aux=*p;
*p=(*p)->dir; //faz ligao com filho a direita
free(aux);
return 1;
}
//caso 2b: s h o filho esquerdo
else if ((*p)->dir == NULL) {
aux = *p;
*p = (*p)->esq; //faz ligao com filho a esquerda
free(aux);
return 1;
}

Operaes: Excluir
//caso 3: h os dois filhos
else { //substitui pelo maior da subrvore 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 sejam
capazes de
Explicar os principais conceitos e propriedades de rvores
n-rias, rvores binrias e rvores binrias de pesquisa
Explicar o funcionamento de procedimentos para busca,
insero e remoo de elementos em rvores binrias de
pesquisa
Implementar algoritmos em linguagem de programao
para efetuar operaes de busca, insero e remoo em
rvores

Referncias Utilizadas
Livro:
ZIVIANI, Nivio, Projeto de algoritmos com
implementao em Pascal e C, 3a. edio,
Editora Thomson, 2011
Baseado nos slides da Profa. Lvia Naiara de
Andrade e da Profa. Sandra Aluisio (ICMC-USP)

10

Вам также может понравиться