13.04.2013 Views

Estruturas de Dados Árvores

Estruturas de Dados Árvores

Estruturas de Dados Árvores

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Estruturas</strong> <strong>de</strong> <strong>Dados</strong><br />

Créditos<br />

Parte <strong>de</strong>ste material consiste <strong>de</strong>:<br />

<strong>Árvores</strong><br />

Prof. Ricardo J. G. B. Campello<br />

Adaptações dos sli<strong>de</strong>s gentilmente cedidos<br />

pela Profa. Maria Cristina F. <strong>de</strong> Oliveira<br />

Adaptados dos originais <strong>de</strong> Walter Aoiama Nagai<br />

e M. Graças Volpe Nunes<br />

Adaptações e extensões dos originais <strong>de</strong><br />

Goodrich & Tamassia<br />

Disponíveis em http://ww3.datastructures.net/<br />

2<br />

1


Introdução<br />

Problema:<br />

Listas Lineares<br />

Lista Enca<strong>de</strong>ada<br />

Eficiente para inserção e remoção dinâmica <strong>de</strong> elementos,<br />

mas ineficiente para busca<br />

Lista Seqüencial (or<strong>de</strong>nada)<br />

Eficiente para busca, mas ineficiente para inserção e<br />

remoção <strong>de</strong> elementos<br />

Possível Solução:<br />

<strong>Árvores</strong><br />

Eficientes para inserção, remoção e busca<br />

Representação não linear...<br />

Introdução<br />

Em computação, uma<br />

árvore é um mo<strong>de</strong>lo<br />

abstrato <strong>de</strong> uma<br />

estrutura hierárquica.<br />

Trata-se <strong>de</strong> uma<br />

estrutura não-linear<br />

constituída <strong>de</strong> nós<br />

com relações <strong>de</strong><br />

parentesco (pai-filho).<br />

Aplicações:<br />

S.O.s (arquivos).<br />

Linguagens (O.O.).<br />

etc<br />

ABC Computadores<br />

Vendas Produção P&D<br />

BR Internacionais<br />

Europa Asia EUA<br />

Laptops Desktops<br />

4<br />

3<br />

2


Introdução<br />

<strong>Árvores</strong> são a<strong>de</strong>quadas para representar<br />

estruturas hierárquicas não lineares, como<br />

relações <strong>de</strong> <strong>de</strong>scendência<br />

pai, filhos, irmãos, etc.<br />

Definição<br />

Homer Simpson<br />

Bart Lisa Maggie<br />

Árvore T: conjunto finito <strong>de</strong> elementos,<br />

<strong>de</strong>nominados nós, nodos ou vértices, tais que:<br />

Se T = ∅ a árvore é dita vazia;<br />

Caso Contrário:<br />

(i) T contém um nó especial, <strong>de</strong>nominado raiz (R T);<br />

(ii) Os <strong>de</strong>mais nós, ou constituem um único conjunto vazio, ou<br />

são divididos em n conjuntos disjuntos não vazios<br />

(T 1,T 2,…,T n), que são, por sua vez, cada qual uma árvore;<br />

T 1,T 2,…,T n são chamadas sub-árvores <strong>de</strong> R T;<br />

R T<br />

T1 T ...<br />

2 Tn 5<br />

6<br />

3


Terminologia<br />

Se um nó Y é raiz <strong>de</strong> uma sub-árvore <strong>de</strong> um<br />

nó X, então X é PAI <strong>de</strong> Y e Y é FILHO <strong>de</strong> X<br />

Dois nós são IRMÃOs se são filhos do<br />

mesmo pai<br />

Se os nós Y 1, Y 2, ..., Y j são irmãos, e o nó Z<br />

é filho <strong>de</strong> Y 1, então Y 2,...,Y j são TIOs <strong>de</strong> Z<br />

Exemplo<br />

FILHOS<br />

DE A<br />

RAIZ da<br />

árvore<br />

E<br />

A<br />

FILHOS<br />

DE B<br />

Nós: A, B, C, D, E, F, G<br />

Folhas: E,F,C,G<br />

B C D<br />

F<br />

G<br />

FILHO<br />

DE D<br />

7<br />

8<br />

4


Terminologia<br />

Raiz (root): nó sem pai (A).<br />

Nó Interno: nó com pelo<br />

menos um filho (A, B, C, F).<br />

Nó Externo ou Folha: nó<br />

sem filhos (E, I, J, K, G, H, D).<br />

Ancestrais (<strong>de</strong> um nó): pai<br />

ou ancestrais do pai do nó.<br />

Descen<strong>de</strong>ntes (<strong>de</strong> um nó):<br />

nós que o possuem como<br />

ancestral.<br />

Sub-Árvore: árvore<br />

consistindo <strong>de</strong> um nó e dos<br />

seus <strong>de</strong>scen<strong>de</strong>ntes.<br />

Exemplo<br />

TIOS <strong>de</strong> F e E<br />

A<br />

A<br />

B C D<br />

E F<br />

I J K<br />

C D B<br />

DESCENDENTES<br />

DE A<br />

ANCESTRAIS DE G<br />

G E<br />

F<br />

G H<br />

Sub-árvore 9<br />

NÓS<br />

IRMÃOS<br />

10<br />

5


Terminologia<br />

O NÍVEL <strong>de</strong> um nó X é <strong>de</strong>finido como:<br />

O nível <strong>de</strong> um nó raiz é 1<br />

O nível <strong>de</strong> um nó não raiz é dado por<br />

Nível <strong>de</strong> seu nó PAI + 1<br />

O GRAU <strong>de</strong> um nó X pertencente a uma<br />

árvore é igual ao número <strong>de</strong> filhos <strong>de</strong> X<br />

Se X é folha, então Grau(X) = 0<br />

O GRAU <strong>de</strong> uma árvore T é o maior entre<br />

os graus <strong>de</strong> todos os seus nós<br />

Exemplo: NÍVEL 1 A<br />

NÍVEL 2<br />

B C D E<br />

F G H NÍVEL 3 I J K L<br />

M N O<br />

P<br />

NÍVEL 5<br />

NÍVEL 4<br />

11<br />

Grau <strong>de</strong> A: 4<br />

Grau <strong>de</strong> B: 3<br />

Grau <strong>de</strong> C: 0<br />

Grau <strong>de</strong> M: 1<br />

Grau da Árvore: 4<br />

12<br />

6


Terminologia<br />

Profundida<strong>de</strong> (<strong>de</strong> um nó):<br />

número <strong>de</strong> ancestrais.<br />

Raiz possui profundida<strong>de</strong> zero.<br />

Altura (<strong>de</strong> uma árvore): máxima<br />

profundida<strong>de</strong> <strong>de</strong> qualquer nó.<br />

Exemplo ao lado ⇒ 3.<br />

Altura (<strong>de</strong> um nó): altura da<br />

sub-árvore com raiz naquele nó.<br />

Folhas possuem altura zero.<br />

Raiz possui altura da árvore.<br />

Profundida<strong>de</strong> (<strong>de</strong> uma árvore):<br />

máx. profundida<strong>de</strong> <strong>de</strong> uma folha.<br />

Equivalente à altura.<br />

Exemplo:<br />

A<br />

A<br />

B C D<br />

E F<br />

I J K<br />

B C D E<br />

G H<br />

Nota: Terminologia não é universal!<br />

Alguns autores consi<strong>de</strong>ram Sub-Árvore como 1<br />

(ao invés <strong>de</strong> zero) a altura das folhas<br />

e a profundida<strong>de</strong> da raiz, o que altera<br />

as <strong>de</strong>mais <strong>de</strong>finições.<br />

F G H I J K L<br />

M N O<br />

P<br />

Altura Árvore = Profundida<strong>de</strong> Árvore = 4<br />

ALTURA DE A: 4<br />

ALTURA DE C: 0<br />

ALTURA DE D: 1<br />

PROF. DE A: 0<br />

PROF. DE C: 1<br />

PROF. DE D: 1<br />

13<br />

14<br />

7


Outras Formas <strong>de</strong> Representação<br />

Representação por Parênteses Aninhados:<br />

( A (B) ( C ( D (G) (H) ) (E) ( F (I) ) ) )<br />

ou seja, uma lista generalizada!!<br />

Representação por Diagramas <strong>de</strong> Venn:<br />

B<br />

A<br />

C<br />

D<br />

G<br />

<strong>Árvores</strong> Binárias (AB)<br />

Uma Árvore Binária T é um conjunto finito <strong>de</strong><br />

elementos, <strong>de</strong>nominados nós, nodos ou<br />

vértices, tal que:<br />

H<br />

E<br />

F<br />

I<br />

(i) Se T = ∅, a árvore é dita vazia, ou<br />

(ii) T contém um nó especial, chamado raiz <strong>de</strong> T (R T),<br />

e os <strong>de</strong>mais nós po<strong>de</strong>m ser subdivididos em dois<br />

sub-conjuntos distintos, T E e T D, os quais também<br />

são árvores binárias (possivelmente vazias).<br />

T E e T D são <strong>de</strong>nominados sub-árvore esquerda e<br />

sub-árvore direita <strong>de</strong> T, respectivamente<br />

T E<br />

R T<br />

15<br />

T D<br />

16<br />

8


<strong>Árvores</strong> Binárias (AB)<br />

A raiz da sub-árvore esquerda (direita) <strong>de</strong> um nó v,<br />

se existir, é <strong>de</strong>nominada filho esquerdo (direito)<br />

<strong>de</strong> v.<br />

Pela natureza da árvore binária, o filho esquerdo po<strong>de</strong><br />

existir sem o direito, e vice-versa<br />

Exemplo: A<br />

D<br />

G<br />

B<br />

Algumas Proprieda<strong>de</strong>s <strong>de</strong> ABs<br />

E<br />

Qual a altura máxima <strong>de</strong> uma AB com n nós?<br />

Resposta: n – 1<br />

Árvore <strong>de</strong>generada ≡ Lista<br />

Qual a altura mínima <strong>de</strong> uma AB c/ n nós?<br />

Resposta: teto[ log 2(n+1) ] – 1<br />

4<br />

1<br />

2 3<br />

5 6 7<br />

H<br />

C<br />

F<br />

I<br />

n-1<br />

n = 1 ⇒ h = 0<br />

n = 2, 3 ⇒ h = 1<br />

n = 4, ..., 7 ⇒ h = 2<br />

n = 8, ..., 15 ⇒ h = 3<br />

...<br />

n = 2 h+1 – 1 ⇒ h = log 2(n+1) – 1<br />

1<br />

0<br />

17<br />

18<br />

9


Árvore Binária Própria<br />

Também <strong>de</strong>nominada <strong>de</strong> árvore<br />

estritamente binária, é tal que:<br />

Cada nó interno possui exatamente<br />

2 filhos (não vazios).<br />

Denomina-se o par <strong>de</strong> filhos <strong>de</strong>:<br />

filho esquerdo (left child), e<br />

filho direito (right child).<br />

Definição recursiva:<br />

Uma árvore <strong>de</strong> um único nó raiz,<br />

ou<br />

Uma árvore cuja raiz possui um<br />

par or<strong>de</strong>nado <strong>de</strong> filhos, cada um<br />

dos quais é a raiz <strong>de</strong> uma árvore<br />

binária própria.<br />

Aplicações:<br />

Expressões aritméticas.<br />

Processos <strong>de</strong> <strong>de</strong>cisão.<br />

etc<br />

A<br />

B C<br />

D E<br />

H I<br />

F G<br />

Proprieda<strong>de</strong>s <strong>de</strong> <strong>Árvores</strong> Binárias Próprias<br />

Notação:<br />

n número <strong>de</strong> nós.<br />

e número <strong>de</strong> nós<br />

externos.<br />

i número <strong>de</strong> nós<br />

internos.<br />

h altura.<br />

19<br />

Algumas Proprieda<strong>de</strong>s:<br />

e = i + 1<br />

n = 2e − 1<br />

h ≤ i<br />

h ≤ (n − 1)/2<br />

e ≤ 2 h<br />

h ≥ log 2 e<br />

h ≥ log 2 (n + 1) − 1<br />

20<br />

10


Árvore Binária Própria<br />

Exemplo <strong>de</strong> Aplicação:<br />

Árvore <strong>de</strong> Expressão Aritmética<br />

Árvore Binária associada com uma expressão aritmética<br />

Nós internos: operadores<br />

Nós externos: operandos<br />

Exemplo: (2 × (a − 1) + (3 × b))<br />

Árvore Binária Própria<br />

Exemplo <strong>de</strong> Aplicação:<br />

Árvore Binária <strong>de</strong> Decisão<br />

2<br />

×<br />

−<br />

a 1<br />

Árvore binária associada a um processo <strong>de</strong> <strong>de</strong>cisão<br />

Nós internos: questões com respostas sim ou não<br />

Nós externos: <strong>de</strong>cisões<br />

Exemplo:<br />

Poupança<br />

Conservador?<br />

Sim Não<br />

+<br />

Curto prazo?<br />

Sim Não<br />

×<br />

3 b<br />

Fundo R. Fixa Aceita Altos Riscos?<br />

21<br />

Sim Não<br />

Ações Carteira Mista<br />

22<br />

11


Árvore Binária Completa<br />

Árvore Binária Completa (ABC):<br />

É própria*<br />

Se a profundida<strong>de</strong> da árvore é d, então cada nó folha está<br />

no nível d ou no nível d+1<br />

Os nós folha no nível d estão todos à direita dos internos<br />

nível d+1<br />

nível d<br />

* Exceção po<strong>de</strong> eventualmente ser feita ao nó folha mais à direita do último nível, que po<strong>de</strong> não existir<br />

Árvore Binária Cheia<br />

Árvore Binária Completa Cheia (ABCC)<br />

É ABC, e<br />

Todos os seus nós folha estão no mesmo nível<br />

C,D,E,F estão no nível 3<br />

(profundida<strong>de</strong> 2)<br />

B<br />

A<br />

G<br />

C D E F<br />

23<br />

24<br />

12


Árvore Binária Cheia<br />

Proprieda<strong>de</strong> Importante:<br />

Dada uma ABCC e sua profundida<strong>de</strong> d (ou altura<br />

h), calcula-se o número n <strong>de</strong> nós na árvore como:<br />

Nível 1 (d = 0): 1 nó (total = 1 nó)<br />

Nível 2 (d = 1): 2 nós (total = 3 nós)<br />

Nível 3 (d = 2): 4 nós (total = 7 nós)<br />

...<br />

Nível i (d = i−1): 2 d nós (total = 2 i – 1 = 2 d+1 – 1 nós)<br />

Logo: n = 2 d+1 – 1 = 2 h+1 – 1<br />

<strong>Árvores</strong> Binárias Balanceadas<br />

<strong>Árvores</strong> Balanceadas: São tais que qualquer <strong>de</strong> suas<br />

sub-árvores com m nós possui altura O(log m)<br />

Árvore Binária Balanceada: Para cada nó, as alturas<br />

<strong>de</strong> suas sub-árvores diferem em, no máximo, 1<br />

B<br />

A<br />

C<br />

D E<br />

Não é difícil mostrar que essa condição implica <strong>de</strong> fato que a<br />

árvore é balanceada segundo a <strong>de</strong>finição geral acima<br />

D<br />

B<br />

E<br />

A<br />

F<br />

C<br />

25<br />

26<br />

13


<strong>Árvores</strong> Binárias Balanceadas<br />

Árvore Binária Perfeitamente Balanceada<br />

Para cada nó, o no. <strong>de</strong> nós <strong>de</strong> suas sub-árvores<br />

esquerda e direita difere em, no máximo, 1<br />

Toda AB Perfeitamente Balanceada é AB Balanceada,<br />

mas o inverso não é necessariamente verda<strong>de</strong>.<br />

Exemplo:<br />

Exercícios<br />

D<br />

B<br />

E<br />

Prove por contra-exemplo que uma AB própria não é<br />

necessariamente uma AB completa.<br />

Represente a seguinte expressão aritmética em uma<br />

árvore binária própria <strong>de</strong> expressão aritmética:<br />

( 5 + ( ( 2 / (a + 1) ) − (3 × b) ) ) × ( 10 / c )<br />

Responda com relação à árvore do exercício anterior:<br />

Qual a altura da árvore ?<br />

Qual a profundida<strong>de</strong> da árvore?<br />

Qual o grau da árvore?<br />

A<br />

Quais os ancestrais, os <strong>de</strong>scen<strong>de</strong>ntes, a profundida<strong>de</strong>, a<br />

altura, o nível, o grau, o pai, os tios, os irmãos e os filhos do<br />

nó correspon<strong>de</strong>nte ao operador <strong>de</strong> subtração da expressão ?<br />

C<br />

27<br />

14


Exercícios<br />

Represente a árvore do exercício anterior via:<br />

Parênteses Aninhados<br />

Diagrama <strong>de</strong> Venn.<br />

Qual a altura máxima que uma árvore estritamente<br />

binária com 45 nós po<strong>de</strong> ter? Justifique.<br />

Qual a altura máxima que uma árvore estritamente<br />

binária com 27 nós externos po<strong>de</strong> ter? Justifique.<br />

Qual a altura mínima que uma árvore estritamente<br />

binária com 43 nós po<strong>de</strong> ter? Justifique.<br />

Qual a altura mínima que uma árvore estritamente<br />

binária com 30 nós externos po<strong>de</strong> ter? Justifique.<br />

29<br />

15

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!