Anda di halaman 1dari 32

rvores

Introduo

Heverton B. de Macdo

Junho de 2010

rvores
Usa-se, frequentemente, uma rvore para representar uma hierarquia.

Por exemplo, um organograma em rvore.

Exemplo: Organograma
Presidente Raiz da rvore

Vice-pres. Diviso A

Vice-pres. Diviso B

Gerente Depto. A1

Gerente Depto. A2

Gerente Depto. B1

Folha Folhas

Empregado

Empregado

Empregado

Empregado

Empregado

Empregado

rvores
Extremamente teis para determinados tipos de computao. Por exemplo:

Representao de expresses aritmticas; Armazenamento eficiente tornando buscas e inseres mais eficientes.

Conceitos Bsicos (N)

N = Clula ou n de uma rvore.

Possui um ou mais campos para representar o elemento e outros n campos para indicar outros ns ou subrvores.

Um n que no possui subrvores chamada de n folha.

Conceitos Bsicos (rvore)

rvore = Conjunto finito, no vazio de ns,

T r TT 2 { 1 } T n
com as seguintes propriedades:
1.

2.

Um n especial da rvore, r, chamado de raiz da rvore; O restante da rvore particionada em n > 0 subconjuntos, T1, T2, ..., Tn, cada um dos quais sendo uma rvore.

Conceitos Bsicos (notao)


Por convenincia as rvores geralmente so representadas como:

T {T 2 , 1T , n r , , T }
Exemplo 1:

Ta {A}

Podendo ser representada graficamente.

rvore minimal

Conceitos Bsicos (notao) cont.


Exemplo 2:

T = B,C
Na forma grfica:

B C

Conceitos Bsicos (notao) cont.


Exemplo 3:

C G T = A,B, D , , E F , H I , , J , ,
Na forma grfica:

A C E H

F
I

G J

Conceitos Bsicos (Grau)


Grau de um n:
Corresponde ao nmero de subrvores relacionadas com aquele n. Por exemplo:

A A
Grau 0 Folha

A C B C D E

Grau 2

Grau 4

OBS: O grau da rvore corresponde ao maior grau encontrado na rvore.

Conceitos Bsicos (Caminho e Comprimento)


Caminho e comprimento de um caminho:
Dada um rvore T que contm um conjunto de ns R, um caminho em T definida como uma seqncia no vazia de ns. Por exemplo:

A
B

C
E F G

Caminho A C; A B D; A C F H; R1 ... Rk

Comprimento 1 2 3 k-1

Conceitos Bsicos (Nvel)


Nvel ou profundidade de um n:
Corresponde ao comprimento do caminho que une um n raiz. Por exemplo:

A
B D E

Nvel 0

C
F G

Nvel 1
Nvel 2

Nvel 3

Conceitos Bsicos (Altura)


Altura de um n:
Corresponde ao comprimento do caminho mais longo que une um n a alguma de suas folhas. Por exemplo:
N H F C A Altura 0 1 2 3

A
B D E

C
F G

OBS: A altura de uma rvore corresponde ao nvel mais alto de uma rvore.

rvores N-reas
Todos os ns possuem o mesmo grau N.
Por exemplo:

A B C C E H

A
B D E

F
I

G J

rvore com N=2.

rvore com N=3.

rvores Binrias
rvores binrias so rvores N-reas com valor de N igual a 2.
De forma convencional, todos os ns (T) possuem um filho esquerda (TL) e um filho direita (TR). Assim, temos:

T r T,T} {, L R

rvores Binrias (insero)


As rvores binrias geralmente so rvores ordenadas.
Ao inserir um n na rvore necessrio fazer comparaes entre alguns ns da rvore e o n que est sendo inserido. Considere a regra abaixo:

Se o n que est sendo inserido for maior que o n raiz, ele deve ser inserido a direita da raiz. Caso contrrio, o n deve ser inserido a esquerda da raiz.

rvores Binrias (insero) cont.


Exemplo:
Considere a insero dos elementos: 5, 3, 7, 2.
Inicialmente a rvore est vazia

Insere o elemento 5 na raiz.

7 3 2
O elemento 7 deve ser O inserido a 3 elemento direita de 5. deve ser inserido. O elemento 2 deve ser inserido a esquerda de 3.

O elemento 3 inserido a esquerda de 5

rvores Binrias (Percurso)

Pr-ordem;

O percurso em rvore corresponde a forma em que todos os ns da rvore so visitados.

Visita o n raiz; Visita a subrvore esquerda; Visita a subrvore direita;

Em-ordem;
Visita a subrvore esquerda; Visita o n raiz; Visita a subrvore direita;

Ps-ordem;
Visita a subrvore esquerda; Visita a subrvore direita; Visita o n raiz;

rvores Binrias (Pr-ordem)


Percurso em Pr-ordem:
Visita (escreve) o n raiz;

Visita a subrvore esquerda;

10 5 15

Visita a subrvore direita;

Percurso: 10, 5, 3, 9, 15

rvores Binrias (Em-ordem)


Percurso Em-ordem:
Visita a subrvore esquerda;

Visita (escreve) o n raiz;

10 5 15

Visita a subrvore direita;

Percurso: 3, 5, 9, 10, 15

rvores Binrias (Ps-ordem)


Percurso em Ps-ordem:
Visita a subrvore esquerda;

Visita a subrvore direita;

10 5 15

Visita (escreve) o n raiz;

Percurso: 3, 9, 5 15, 10

rvores Binrias (remoo)


O processo de remoo de um n deve ser realizado sem que a estrutura ordenada da rvore no seja prejudicada.
Ao remover um determinado n deve-se verificar as seguintes condies:
1.

Se o n a ser removido no possui subrvore esquerda ele deve ser substitudo pela subrvore direita. Caso contrrio, se o n a ser removido no possui subrvore direita ele deve ser substitudo pela subrvore esquerda.

2.

3.

Caso contrrio o n a ser removido deve ser substitudo pelo maior elemento da subrvore esquerda.

rvores Binrias (remoo)


Exemplo 1: Remover o n 3
Condio 1: Se o n a ser removido no

5 1 7

5 possui subrvore esquerda ele deve ser substitudo pela subrvore direita. 1 7

-1

3
4

-1

3
4

rvores Binrias (remoo)


Exemplo 2: Remover o n 4
Condio 1: Se o n a ser removido 5

5 4 7

no possui subrvore esquerda ele deve ser substitudo pela subrvore direita. 4 7

Condio 2: Caso contrrio, se o

2
-1 3

n a ser removido no possui 2 subrvore direita ele deve ser substitudo pela subrvore esquerda.

-1

rvores Binrias (remoo)


Exemplo 2: Remover o n 5
Condio 1: Se o n a ser removido no 4 5
possui subrvore esquerda ele deve ser substitudo pela subrvore direita.

5 1 7

Condio 2: Caso contrrio, se o n a

-1

3
4

ser removido no possui subrvore direita -1 3 ele deve ser substitudo pela subrvore esquerda.

Condio 3: Caso contrrio o n a ser


removido deve ser substitudo pelo maior elemento da subrvore esquerda.

rvores Binrias (Balanceadas)


Em uma rvore balanceada o mdulo da diferena do maior caminho de suas subrvores (esquerda e direita) no mximo 1.

5
1 -1 3 7

Maior caminho para subrvore Verificao para o n 5 1 esquerda do n 1 corresponde 5 a 1. MCSubE(1)=1; 2. MCSubE(5)=2; Maior caminho para subrvore direita do n 5 corresponde a 1 1. MCSubD(5) = 1; MCSubD(1)

|MCSubE(5) MCSubD(5)| <= 1 |MCSubE(1) MCSubD(1)| |2 1| <=1 |1 |1| <= 1 |0| Verdadeiro

rvores Binrias (Balanceamento Perfeito)


Em uma rvore perfeitamente balanceada o mdulo da diferena do nmero de descendentes entre suas subrvores (esquerda e direita) no mximo 1.

5 1 -1 3 7

O nmero de descendentes da subrvore esquerda do n 5 Verificando o n 5 corresponde a 3. QSubE(5)=3; O nmero de descendentes da subrvore direita do n 5 corresponde a 1. QSubD(5)=1; |QSubE(5) QSubD(5)| <= 1 |3 1| <=1 |2| <= 1 Falso

Exerccios
1 Considere a insero da seguinte seqncia de valores em uma rvore binria ordenada: 10, 5, 15, 7, 12, 3, 13
a) b)

Monte a representao grfica desta rvore; Escreva a rvore conforme a notao: T={r,{TL}, {TR}};

Exerccios (Cont.)
2 Considere a seguinte rvore:
A
B D E C F G
a) Qual o grau dessa rvore? b) Qual o grau do no A?

c) Qual o comprimento do caminho CGJ?


d) Escreva quais ns esto em cada nvel da rvore? e) Qual a altura do n B? f) Qual a altura da rvore?

Exerccios (cont.)
3 Considere a seguinte rvore binria:
5 1 -1 3 7
a) Escreva os elementos da rvore ao realizar um percurso EmOrdem. b) Escreva os elementos da rvore ao realizar um percurso PsOrdem. c) Escreva os elementos da rvore ao realizar um percurso PrOrdem.

Exerccios (cont.)
4 Considere a seguinte rvore binria:
5 1 -1 3 7
a) Caso fosse inserido o elemento (n) 6 nessa rvore, em qual local ele seria inserido. b) Considerando que o elemento 5 ser removido, reescreva a rvore com essa alterao.

Exerccio para Implementao


Faa a implementao de uma rvore binria ordenada em linguagem C/C++. A implementao dever conter as seguinte funes: Mostrar todos os ns folhas;
Insero de um n; Percurso em Pr-Ordem; Percurso Em-Ordem; Percurso em Ps-Ordem; Encontrar o comprimento do n raiz

at um n qualquer;
Mostrar o caminho de um n

qualquer at o n raiz; Encontrar a altura de uma rvore; Mostrar o(s) n(s) que est(o) em

Quantidade de elementos na rvore;


Maior elemento; Menor elemento; Remoo do maior elemento; Remoo de um n qualquer;

um nvel qualquer da rvore; Mostrar o(s) n(s) mais distante(s) da

raiz.