You are on page 1of 45

Estrutura de Dados I

rvores

Prof. Eder Stone Fontoura Adaptao dos slides da Profa. Cristina Nunes

rvores

So estruturas de dados que caracterizam uma relao de hierarquia entre os dados

um conjunto de dados hierarquicamente subordinado a outro.

Diferente das listas, no so estruturas de dados lineares.


Podem representar: sistemas de arquivos, interfaces grficas com o usurio (organizao dos menus), organizao das pginas de um site, organizao hierrquica de cargos ou setores de um empresa, etc. Exemplo:

Presidente Diretoria Financeira Diretoria de Marketing Diretoria De Vendas

Definio

Normalmente um conjunto finito T de um ou mais nodos tal que:


existe um nodo denominado raiz da rvore; os demais nodos formam m 0 subconjuntos disjuntos t1, t2, ..., tm, onde cada um desses subconjuntos uma rvore. as rvores ti (1 i M) recebem a denominao de sub-rvore.

D = Raiz C e E = sub-rvores

A
t1

B
t2

Definio

Um mesmo nodo no aparece em mais de uma sub-rvore ao mesmo tempo nunca teremos sub-rvores interligadas.

A B D C
No rvore!!!

Definio

Se X um n que antecede um n Y, X pai de Y ou Y filho de X. Nodos que possuem um mesmo pai so ditos irmos A raiz o nico nodo que no possui pai

Raiz

G pai de H H filho de G

A e B so irmos 5

Terminologia

Floresta: Se retirarmos o nodo raiz de uma rvore que contm subrvores estaremos criando uma floresta. Os filhos da raiz original sero as raizes das novas rvores.
D C E B G

Floresta
A B F H

Terminologia

N externo ou folha: nodos que no possuem filhos.


D C E

N interno ou galho: nodos que no so folhas e nem raiz.


D C E

Terminologia

Grau de um Nodo: nmero de sub-rvores de um nodo.


D

Grau = 2

Grau = 1

Nvel de um Nodo: nmero de linhas que liga o n raiz. O nvel do nodo raiz 0.
D

Nvel = 0
E

Nvel = 1

Nvel = 1

Nvel = 2 A

Nvel = 2

Nvel = 2

Terminologia

Altura da rvore: nvel mais alto da rvore.


D C

Altura = 2
E

rvore ordenada: quando existe uma ordem linear definida para os filhos de uma rvore.

Formas de Representao

Por adjacncia (ou contiguidade)


Armazenamento da rvore em um vetor. Cada posio por vetor pode, por exemplo, conter, alm da informao do nodo, referncias aos nodos filhos.

ndice onde est o nodo

Representao:

Ou guardar apenas a informao e o grau no nodo:

10

Formas de Representao

Registro fixo

Se o grau da rvore for baixo e/ou a variabilidade do grau entre os nodos for pouca.
A B
nulo

C
nulo nulo

nulo

E
nulo nulo nulo

F
nulo nulo nulo

G
nulo nulo nulo

H
nulo nulo

I
nulo nulonulo

Problema:

nulonulo nulo

No caso de rvores genricas, em que cada nodo pode ter uma quantidade de sub-rvores diferentes, necessrio limitar o nmero mximo de sub-rvores que cada nodo deve conter. Nodos de uma mesma rvore so todos do mesmo tipo.

11

rvores Binrias

Estruturas do tipo rvore, onde o grau de cada nodo sempre menor ou igual a 2. Caso especial de rvore em que nenhum nodo tem mais que dois filhos. Existe um senso de posio: distingue-se entre uma sub-rvore esquerda e uma sub-rvore direita.
D B E

F No rvore binria
sub-rvore da direita

sub-rvore da esquerda

12

Propriedades

O nmero mximo de nodos no K-simo nvel de uma rvore binria 2k.

Ex.: no nvel 2 podemos ter no mximo 22 = 4 nodos.

O nmero mximo de nodos em uma rvore binria com altura K 2K+1 - 1, para K 0. rvore completa: rvore de altura K com 2K+1 - 1 nodos.
D B F

Altura = 2 Nodos = 7

13

rvores Genricas -> rvores Binrias

A transformao de uma rvore binria produz uma alterao na estrutura fsica da mesma, o que pode provocar uma interpretao errnea da relao hierrquica existente na rvore original. Para se interpretar corretamente a hierarquia de uma rvore transformada em rvore binria, deve-se ter em mente a transformao havida. Assim, a sub-rvore da esquerda de um n o filho deste n, enquanto que a sub-rvore da direita o seu irmo. A transformao de uma rvore em rvore binria oferece a vantagem de no requerer conhecimento prvio da mesma, para fins de alocao encadeada. A desvantagem em relao primeira alternativa reside no fato de no se ter acesso direto de um n pai para qualquer um dos filhos, j que para acessar o i-simo filho necessrio acessar os (i - 1) anteriores.

14

rvores Genricas -> rvores Binrias

Transformar uma rvore genrica em binria:


Etapa1: Conecta-se os nodos irmos; Etapa2: Desconecta-se o nodo pai dos nodos filhos, exceto do 1 filho.

15

rvores Genricas -> rvores Binrias

Redesenhando

16

Representao

Nodos de uma rvore binria tero (no mnimo):


Informao referncia para o nodo da esquerda referncia para nodo da direita.

typedef char nodo nodo }nodo;

struct nodo{ info; * esquerda; * direita;

A B C E F G D

17

vore de busca binria (rvore Ordenada)

Uma rvore binria, cuja raiz armazena o elemento R, denominada rvore de busca binria se:

todo elemento armazenado na sub-rvore esquerda menor que R; todo elemento armazenado na sub-rvore direita maior que R; as sub-rvores esquerda e direita tambm so rvores de busca binria
D B F

18

Operaes Bsicas

Criar a rvore Inserir nodos na rvore Pesquisar nodos na rvore Excluir nodos da rvore Determinar a altura da rvore Determinar o nvel de um nodo Caminhar em uma rvore

19

Insero

Novos nodos inseridos entram sempre na condio de folhas

um nodo no pode entrar numa rvore e j assumir filhos. Comeamos pelo nodo raiz. Como C menor que E, tomamos a sub-rvore da esquerda. Comparando com a nova raiz temos C > B e conclui-se que o elemento deve ser armazenado na sub-rvore direita. O processo se repete at chegarmos a uma sub-rvore nula. Nesse momento, uma folha alocada para armazenar o novo elemento e entra como raiz da sub-rvore nula.
E C B A D F G Inserindo C A C B D F G E

Para inserir um elemento C


20

Pesquisa

Dado um elemento X a ser procurado entre os nodos da rvore, temos quatro possibilidades a considerar:

uma rvore nula, portanto no h nada a fazer; A raiz armazena o elemento X; O valor de X menor que aquele armazenado na raiz: deve-se prosseguir com a busca na sub-rvore esquerda; O valor de X maior ou igual que aquele armazenado na raiz: deve-se prosseguir com a busca na sub-rvore direita.

21

Exerccios

Implementar um programa para criar rvores binrias de busca. Desenvolver as seguintes funes:

Adicionar elementos Apresentar a informao de todos os elementos O n com a informao x encontra-se na rvore? Nvel do n com a informao x x um n externo ou interno? 22

Caminhamentos

Forma de percorrer a rvore.

Visitar cada nodo apenas uma vez. Pr-fixado (ou pr-ordem) Central (ou em-ordem) Ps-fixado (ou ps-ordem)

Tipos

23

Caminhamento Pr-fixado

Passos:

Primeiro: Visita Raiz Segundo: Percorre sub-rvore da esquerda Terceiro: Percorre sub-rvore da direita

Ordem de visita nos nodos: 1, 2, 4, 5, 3, 6 e 7

24

Caminhamento Central

Passos:

Primeiro: Percorre sub-rvore da esquerda Segundo: Visita Raiz Terceiro: Percorre sub-rvore da direita

Ordem de visita nos nodos: 4, 2, 5, 1, 6, 3 e 7.

25

Caminhamento Ps-ordem

Passos

Primeiro: Percorre sub-rvore da esquerda Segundo: Percorre sub-rvore da direita Terceiro: Visita Raiz

Ordem de visita nos nodos: 4, 5, 2, 6, 7, 3 e 1

26

Exemplo
* /

PR: - * + a b c / d - e f CENTRAL: (expresso original) a + b * c - d / e - f PS: (notao polonesa) a b + c * d e f - / -

27

Alternativas de rvores Binrias

Aspecto fundamental do estudo de rvores de busca:

o custo de acesso a uma informao desejada. rvore balanceada rvore-B

Alternativas:

28

rvore Balanceada

Idia: manter os ramos da rvore sempre "no mesmo nvel".

custo para manipular uma informao na rvore se mantm semelhante tanto para os ramos esquerda quanto para os ramos direita.

As suas sub-rvores esquerda e direita possuem a mesma altura. Quando uma rvore cresce muito para um dos lados ela dita degenerada (ou desbalanceada).
rvore balanceada rvore degenerada

29

rvore Balanceada

O processo de balanceamento pode se tornar muito pesado quando a rvore contm muitos ns e vrias inseres so feitas. Em 1962, dois matemticos russos (Adelson Velskii e Landis) introduziram um conceito menos rigoroso de rvores balanceadas.

Uma rvore considerada balanceada quando, para cada n n, as alturas das sub-rvores esquerda e direita diferem no mximo de 1. A esta diferena chamamos de "fator de balanceamento de n (FatBal(n)). Este algoritmo conhecido como rvore AVL.

30

rvore Balanceada

Caractersticas

Diferena da altura da sub-rvore esquerda e direita no mximo 1 Se um nodo raiz no satisfaz a condio de altura, ento ele considerado desbalanceado.

Exemplo

rvore AVL
Altura(100) = Altura(SD) Altura(SE) Altura(100) = 2 1 = 1

rvore desbalanceada
Altura(150) = Altura(SD) Altura(SE) Altura(150) = 2 0 = 2

31

rvore Balanceada

Balanceamento

Processo que busca a distribuio equilibrada dos nodos de modo a otimizar a operao de consulta, isto , minimizar o nmero mdio de comparaes necessrias para localizar uma chave. desejvel que as chaves mais solicitadas estejam prximas raiz. Uma rvore completamente balanceada se a distncia mdia dos nodos at a raiz for mnima.

32

rvore-B

So rvores balanceadas projetadas para trabalhar com dispositivos de armazenamento secundrio como discos magnticos por exemplo. Visam otimizar as operaes de entrada e sada nos dispositivos.

O tempo de acesso s informaes em um disco prejudicado principalmente pelo tempo de posicionamento do brao de leitura. Uma vez que o brao esteja posicionado no local correto, a leitura pode ser feita de forma bastante rpida.

Diferente das rvores binrias, cada n em uma rvore B pode ter muitos filhos

o grau de um n pode ser muito grande.

33

rvore-B

Definio

Uma rvore B de ordem d uma rvore com as seguintes caractersticas:


A raiz tem no mnimo uma chave e dois filhos; Uma folha tem no mnimo d chaves e no tem filhos; Todos os outros ns tm no mnimo d chaves e d+1 filhos; Todos os ns tm, no mximo, 2d chaves e 2d+1 filhos.

A ordem d indica a quantidade mxima e mnima de chaves dentro dos nodos.

34

rvore-B

Estrutura

Os nodos so compostos por chaves, ponteiros e informaes. Para cada chave est associada somente uma informao. Pode-se ter informaes adicionais que facilitam a manipulao dos nodos

Ex.: um campo para guardar o endereo do nodo pai e o nmero de chaves ativas dentro dos nodos

Existe um ponteiro externo que aponta para raiz, indicando o incio da rvore.

35

rvore-B

Exemplo

rvore B de ordem 2 (d = 2)

O nodo raiz pode conter no mnimo 1 chave e 2 apontadores e no mximo 4 chaves com 5 apontadores. Os nodos internos podero conter no mnimo 2 chaves com 3 apontadores e no mximo 4 chaves com 5 apontadores.

36

rvore-B

Principais Vantagens:

A utilizao de memria de no mnimo 50%. As operaes realizadas sobre a rvore-B tem como conseqncia uma ordenao natural das chaves. tima para operaes do tipo:

recuperar um determinado nmero de registros a partir de uma chave ou encontrar sucessores e predecessores

37

rvore-B

As rvores-B diminuem e aumentam de uma nica forma:

atravs da diviso de um nodo em dois irmos ou atravs da unio de dois irmos em um nico nodo.

O aumento ou diminuio da rvore so processos que sempre iniciam nos nodos folha e podem propagar-se at a raiz. Operaes:

Pesquisa:

Anloga ao percurso em rvores binrias de busca. Numa pesquisa binria, os ramos da rvore tomados para um nodo dependem da comparao entre a chave pesquisada e a chave armazenada no nodo. Se a chave pesquisada menor tomado o brao esquerdo, se for maior o direito.

Consultar: http://www.lcad.icmc.usp.br/~nonato/ED/B_arvore/btreebusca.htm

38

rvore-B

Insero:

feita uma pesquisa at a folha apropriada para ser feita a insero. Existem 3 possibilidades:

se existir espao na folha, o dado simplesmente inserido; se no houver espao no nodo, verifica-se no irmo adjacente se h espao. Se houver, toma-se a chave mais a direita do nodo a inserir e promove a "chave pai". A "chave pai" anterior inserida no irmo adjacente. Desta forma, abre-se um espao no nodo em que a chave deve ser inserida; se no houver espao no irmo adjacente, deve ocorrer a ciso do nodo em que a chave deve ser inserida . Neste caso, total de chaves em um nodo dividido d, ficando assim as d menores chaves em um nodo e as d maiores chaves em outro. A chave mais esquerda das d maiores chaves promovida a "chave pai" ( inserida no nodo pai) dos nodos criados na ciso. Deste modo criado um espao nas folhas para ocorrer a insero. Se o nodo pai est cheio, o mesmo processo aplicado para ele, e assim consecutivamente

Consultar: http://www.lcad.icmc.usp.br/~nonato/ED/B_arvore/btreeinsercao.htm

39

A C D E J K

N O

Y Z R S T U V

Incluso da Chave B
G M P X

A B C C D D E E J K

N O

Y Z R S T U V

40

Chavei1[x]

Chavei[x]

.....

.....

N=7

Incluso da Chave O
Chavei[x] Chavei1[x] Chavei+1[x]

.....

.....

S W

O P

Q Q P R

R S

N=4

N=3 41

N=7 A1 A2 A3 A4 A5 A6 A7 A8

Incluso da Chave E
H

N=1

E F

F H

A1 A2 A3 A4 A5 A6 A7 A8 N=4

A1 A2 A3 A4

N=3 42

rvore-B

Excluso:

Pesquisa para localizar o nodo correto; Existem 2 possibilidades:

a chave a ser excluda est em um nodo folha

simplesmente excluda; uma chave adjacente procurada e transferida para o local onde encontrase a chave a ser excluda. esta chave pode ser a primeira chave da folha mais esquerda da subrvore direita ou a ltima chave da folha mais direita da sub-rvore esquerda. a chave substituta retirada de uma folha, o que nos leva a uma retirada em folha.

a chave a ser excluda no est em um nodo folha

43

rvore-B

Verificar se a retirada "quebrou" a definio de rvore B:

caso a folha, aps a retirada, tenha ficado com menos de d chaves:

verificamos a ordem dos irmos adjacentes. feita uma redistribuio. A chave mais a esquerda do irmo adjacente promovida a "chave pai" e a "chave pai" anterior inserida no nodo em que a chave foi retirada (semelhante a insero). feita uma concatenao. Juntar em um nico n as chaves dos irmos adjacentes mais a "chave pai", eliminado um nodo folha e uma chave (a "chave pai") do nodo pai. Dependendo do nmero de chaves do nodo pai, pode resultar em uma nova redistribuio ou em uma nova concatenao.

se existir um irmo adjacente com mais de d chaves:


Se o irmo adjacente tem d chaves


Consultar: http://www.lcad.icmc.usp.br/~nonato/ED/B_arvore/btreeremocao.htm

44

rvore-B
50 25 30 55 70 60 80

Remover 80

50 25 30 55

60 70 60 70 80

45

You might also like