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

Curso de Tecnologia em Sistemas para Internet

Estruturas de Dados:
rvores binrias
Prof. Dr. Loureno de Oliveira Basso
lourencobasso@charqueadas.ifsul.edu.br

Sumrio
rvores
rvores binrias
Percurso em rvores binrias
Altura da rvore
Atividade
Referncias
Leitura recomendada
Estruturas de Dados

Slide 2/32

Lineares x Hierrquicas
Estruturas que vimos at o momento (listas, pilhas, filas)
so adequadas para representar elementos dispostos
linearmente.
Como representar
hierrquica?

elementos

Estruturas de Dados

dispostos

de

forma

Slide 3/32

rvores
Um conjunto de ns tal que:
Existe um n r, denominado raiz, com zero ou mais sub-rvores,
cujas razes esto ligadas a r
Os ns razes destas sub-rvores so os filhos de r
Os ns internos da rvore so os ns com filhos
As folhas ou ns externos da rvore so os ns sem filhos

Estruturas de Dados

Slide 4/32

rvores binrias
Uma rvore em que cada n tem zero, um ou
dois filhos
Uma rvore binria :
Uma rvore vazia; ou
Um n raiz com duas sub-rvores:
A sub-rvore da esquerda (sae)
A sub-rvore da direita (sad)
Estruturas de Dados

Slide 5/32

Exemplo de rvores binria


rvores binrias representando expresses
aritmticas:
Ns folhas representam operandos
Ns internos operadores
Exemplo: (3+6)*(4-1)+5

Estruturas de Dados

Slide 6/32

rvore binria
Notao textual:
A rvore vazia representada por <>
rvores no vazias por <raiz sae sad>
Exemplo:

Estruturas de Dados

Slide 7/32

Implementao de rvore binria


Representao de uma rvore:
Atravs de um ponteiro para o n raiz

Representao de um n da rvore:
Estrutura em C contendo
A informao propriamente dita (exemplo: um caractere)
Dois ponteiros para as sub-rvores, esquerda e direita

Estruturas de Dados

Slide 8/32

Interfaces para rvore binria

Estruturas de Dados

Slide 9/32

Implementao das funes


Implementao recursiva, em geral
Usa a definio recursiva da estrutura
Uma rvore binria :
Uma rvore vazia; ou
Um n raiz com duas sub-rvores:
A sub-rvore da esquerda (sae)
A sub-rvore da direita (sad)

Estruturas de Dados

Slide 10/32

Implementao das funes


Funo arv_criavazia
Cria uma rvore vazia

Estruturas de Dados

Slide 11/32

Implementao das funes


Funo arv_cria
Cria um n raiz dadas a informao e as duas subrvores, a da esquerda e a da direita
Retorna o endereo do n raiz criado

Estruturas de Dados

Slide 12/32

Implementao das funes


arv_criavazia e arv_cria
As duas funes para a criao de rvores
representam os dois casos da definio recursiva
de rvore binria:
Uma rvore binria Arv* a;
vazia a=arv_criavazia();
composta por uma
a=arv_cria(c,sae,sad);

raiz

Estruturas de Dados

duas

sub-rvores

Slide 13/32

Implementao das funes


Funo arv_vazia
Indica se uma rvore ou no vazia

Estruturas de Dados

Slide 14/32

Implementao das funes


Funo arv_libera
Libera memria alocada pela estrutura da rvore
As sub-rvores devem ser liberadas antes de se liberar o n
raiz

Retorna uma rvore vazia, representada por NULL

Estruturas de Dados

Slide 15/32

Implementao das funes


Funo arv_pertence
Verifica a ocorrncia de um caractere c em um de ns
Retorna um valor booleano (1 ou 0) indicando a ocorrncia
ou no do caractere na rvore

Estruturas de Dados

Slide 16/32

Implementao das funes


Funo arv_imprime
Percorre recursivamente a rvore, visitando todos
os ns e imprimindo sua informao

Estruturas de Dados

Slide 17/32

Implementao das funes

Estruturas de Dados

Slide 18/32

Implementao das funes

Estruturas de Dados

Slide 19/32

Implementao das funes

Estruturas de Dados

Slide 20/32

Implementao das funes

Estruturas de Dados

Slide 21/32

Ordens de percurso
Pr-ordem:
Trata raiz, percorre sae, percorre sad
Exemplo: a b d c e f

Ordem simtrica:
Percorre sae, trata raiz, percorre sad
Exemplo: b d a e c f

Ps-ordem:
Percorre sae, percorre sad, trata raiz
Exemplo: d b e f c a
Estruturas de Dados

Slide 22/32

Questo
Como ficaria a implementao da funo de
impresso arv_imprime (abaixo) para atender:

Ordem simtrica?
Ps-ordem?
Estruturas de Dados

Slide 23/32

Altura
Propriedade fundamental de rvores
S existe um caminho da raiz para qualquer n

Altura de uma rvore


Comprimento do caminho mais longo da raiz at uma
das folhas
A altura de uma rvore com um nico n raiz zero
A altura de uma rvore vazia -1

Exemplo:
h=2
Estruturas de Dados

Slide 24/32

Altura
Nvel de um n
A raiz est no nvel 0, seus filhos diretos no nvel 1, ...
O ltimo nvel da rvore a altura da rvore

Estruturas de Dados

Slide 25/32

Altura
rvore cheia
Todos os seus ns internos tm duas sub-rvores associadas
Nmero n de ns de uma rvore cheia de altura h
n = 2h+1 -1

Estruturas de Dados

Slide 26/32

Altura
rvore degenerada
Todos os seus ns internos tm uma nica sub-rvore
associada
Nmero n de ns de uma rvore degenerada de altura h
n = h+1

Estruturas de Dados

Slide 27/32

Altura
Esforo computacional necessrio
alcanar qualquer n da rvore:

para

Proporcional altura da rvore


Altura de uma rvore binria com n ns
Mnima: proporcional a log n (caso da rvore cheia)
Mxima: proporcional a n (caso da rvore degenerada)

Estruturas de Dados

Slide 28/32

Atividade
1) Implemente as funes apresentadas nos slides
anterior (inclusive as adies e remoes de
ns), bem como os trs tipos diferentes de
impresso de acordo com a ordem de percurso.
Observe os diferentes resultados com seus usos.
2) Implemente uma funo que calcula o nmero
de ns de uma rvore.
3) Implemente uma funo que calcula a altura de
uma rvore.
Estruturas de Dados

Slide 29/32

Referncias
CELES, Waldemar; CERQUEIRA, Renato;
RANGEL, Jos Lucas. Introduo a Estrutura
de Dados. Editora Campus, 2004.
Material didtico do Departamento
Informtica da PUC-Rio (2014).

Estruturas de Dados

de

Slide 30/32

Leitura complementar
Captulo 13 rvores. In: CELES, Waldemar;
CERQUEIRA, Renato; RANGEL, Jos Lucas.
Introduo a Estrutura de Dados. Editora
Campus, 2004.

Estruturas de Dados

Slide 31/32

Dvidas
Faa
contato
atravs
do
e-mail
lourencobasso@charqueadas.ifsul.edu.br ou
procure o professor no horrio de
atendimento ao estudante: teras, das 09:00
s 10:45 e das 17:30 s 19:00.

Estruturas de Dados

Slide 32/32