13.04.2013 Views

Estruturas de Dados Árvores

Estruturas de Dados Árvores

Estruturas de Dados Árvores

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<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!