Académique Documents
Professionnel Documents
Culture Documents
1. RVORES
TEOREMA: Um grafo uma rvore se e somente se existir um nico caminho entre cada par de
vrtices de G.
Representao geomtrica
I N
M
G S
H
L
T
R E C
O
D U
A P
K
J
B
F Q
B C D
E F G H I J
K L M N O P Q
R S T U
A raiz da rvore o n A.
Os filhos de A so os ns B, C, e D; os filhos de B so E e F; e assim por diante.
Tambm utilizamos o termo pai: o n C pai dos ns G, H e I.
A raiz o nico n que no tem pai.
Ns que sem filhos so chamados folhas. Na rvore acima: K, R, F, G, M, S, T, O, I, U e Q.
Os descendentes de um n X so todos os ns que se encontram na subrvore da qual X o
n raiz. Por exemplo: os ns M, N, O, S e T so todos descendentes do n H.
Os ancestrais de um n X so todos os ns que se encontram no caminho ascendente de vai
de X at a raiz. Por exemplo: os ancestrais de U so os ns P, J, D e A.
Outras nomenclaturas menos usadas: av e neto, tio e sobrinho, irmo e primo.
Propriedades das rvores:
N NVEL ALTURA
A 1 5
B 2 4
C 2 4
D 2 4
E 3 3
F 3 1
G 3 1
H 3 3
I 3 1
J 3 3
K 4 1
L 4 2
M 4 1
N 4 2
O 4 1
P 4 2
Q 4 1
R 5 1
S 5 1
T 5 1
U 5 1
EXERCCIOS:
1. Desenhe duas rvores no isomorfas com 10 ns e altura 3.
2. Qual o nmero mximo de ns em uma rvore de altura 4, se cada n possui sempre menos do
que 4 filhos?
3. Qual o nmero mnimo de ns que uma rvore com 5 nveis pode ter?
4. Verdadeiro ou falso? O maior nvel em uma rvore sempre igual altura da raiz.
5. Quantas folhas possui uma rvore com altura k, se cada n interno tem exatamente 2 filhos?
6. Quantos ns possui uma rvore com altura k, se cada n interno tem exatamente 2 filhos?
7. Quantos ns possui uma rvore com altura k, se cada n interno tem exatamente 3 filhos?
8. Quantas folhas possui uma rvore com altura 4, se cada n interno tem exatamente m filhos?
9. Quantos ns e quantas folhas possui uma rvore com altura k, se cada n interno possui
exatamente m filhos?
NOTAS DE AULA RVORES
PROFS: FBIO PROTTI E JLIO SILVEIRA 4
O percurso em pr-ordem pode ser definido de forma recursiva pelo algoritmo a seguir:
PRE_ORDEM(n T)
Se T = nulo ento
Retorne
Visite (T)
Para cada filho F do n T (da esquerda para a direita) faa
PRE_ORDEM(F)
Percurso em ps-ordem
O percurso em ps-ordem pode ser definido de forma recursiva pelo algoritmo a seguir:
POS_ORDEM(n T)
Se T = nulo ento
Retorne
Para cada filho F do n T (da esquerda para a direita) faa
POS_ORDEM(F)
Visite (T)
EXERCCIO:
Construa algoritmos no recursivos que implementem todos os trs tipos de percursos em uma
rvore. Utilize vetores que implementem filas e pilhas como soluo para as verses no recursivas.
B D
E G H J
K L N O P
R S T U
Observe que no exemplo acima toda a rvore T alocada estaticamente, contendo no mximo
100 nos. Cada n tem quatro campos: a informao relativa ao n, e mais trs campos de ponteiros
para o pai e para os filhos direito e esquerdo. Tais ponteiros so implementados como ndices do
prprio vetor T, e quando um deles no existe, o ponteiro nulo indicado pelo valor ZERO.
Finalmente, a varivel RAIZ armazena o ndice do n raiz da rvore no vetor T.
A tabela a seguir ilustra a estrutura preenchida de acordo com a rvore representada pela
FIGURA 3.
NOTAS DE AULA RVORES
PROFS: FBIO PROTTI E JLIO SILVEIRA 6
RAIZ = 5.
B
D
struct st_no
{
char info;
NO *pai,
*fesq,
*fdir;
}
NO *raiz;
Para armazenar cada n da rvore, deve-se alocar dinamicamente um elemento do tipo NO,
funo esta que retorna seu endereo de memria. Este endereo ser armazenado no campos pai,
fesq, fdir, e tambm na prpria varivel raiz. Este tipo de implementao mais complexa,
embora permita a alocao de ns sob demanda. Como consequncia, temos flexibilidade no
tamanho da rvore (nmero de ns), que limitado apenas pela capacidade de memria disponvel.
O percurso em pr-ordem em rvores binrias pode ser definido de forma recursiva pelo
algoritmo a seguir:
PRE_ORDEM(n T)
Se T = nulo ento
Retorne
Visite (T)
PRE_ORDEM(T.ESQ)
PRE_ORDEM(T.DIR)
Percurso em ps-ordem
O percurso em ps-ordem em rvores binrias pode ser definido de forma recursiva pelo
algoritmo a seguir:
POS_ORDEM(n T)
Se T = nulo ento
Retorne
POS_ORDEM(T.ESQ)
POS_ORDEM(T.DIR)
Visite (T)
O percurso in-ordem (ou ordem simtrica) em rvores binrias pode ser definido de forma
recursiva pelo algoritmo a seguir:
IN_ORDEM(n T)
Se T = nulo ento
Retorne
IN_ORDEM(T.ESQ)
Visite (T)
IN_ORDEM(T.DIR)
rvore cheia: Todos os ns internos possuem dois filhos, e todas as folhas encontram-se no
ltimo nvel. Observe que toda rvore cheia estritamente binria.
LEMA: Seja T uma rvore binria com n > 0 ns. O nmero de subrvores vazias (esquerdas e
direitas) em T igual a n + 1.
LEMA: Seja T uma rvore binria completa com n > 0 ns. Ento T possui altura h mnima.
Alm disso, h = 1 + log n . Em outras palavras, no existe rvore binria com n > 0 e
altura menor do que este valor.
Uma rvore binria de busca possui a seguinte propriedade: para todo n Q, os elementos
que se encontram na subrvore esquerda de Q possuem informao menor que a informao de
Q, e os elementos que se encontram na subrvore direita de Q possuem informao maior que a
informao de Q. Veja o exemplo:
Maria
Eudes Ricardo
Suponha que desejamos saber se certa informao, contida na varivel X, est ou no numa
rvore binria de busca T. A pesquisa de X em T ocorre da seguinte forma: compara-se inicialmente
X com a raiz de T. Se encontramos X na raiz, a pesquisa termina com sucesso. Caso contrrio, h
duas possibilidades:
1. Se X menor que a informao da raiz, ento a pesquisa deve continuar na subrvore
esquerda da raiz
2. Se X maior que a informao da raiz, ento sabemos que a pesquisa deve continuar na
subrvore direita da raiz
A pesquisa continua sucessivamente, at encontrar X (pesquisa com sucesso) ou atingir uma
subrvore vazia de uma folha (pesquisa com fracasso).
NOTAS DE AULA RVORES
PROFS: FBIO PROTTI E JLIO SILVEIRA 11
Como exemplo, suponha que queremos inserir na rvore da pgina anterior o n com
informao X = Deise.
Logo, o novo n com informao Deise deve ser criado como filho direito do n contendo
Carlos. Veja como fica a rvore aps a insero do n com informao Deise (alguns ns apenas):
NOTAS DE AULA RVORES
PROFS: FBIO PROTTI E JLIO SILVEIRA 12
Maria
Eudes
Carlos
Ana Deise
Exemplos
EXERCCIOS:
1. Desenhe a NICA rvore binria cujos percursos geraram as sadas abaixo:
Pr-ordem: HTJAEX
Ps-ordem: AJTXEH
Ordem simtrica: J A T H X E
2. Desenhe a rvore binria de busca formada pela insero sucessiva dos ns com as informaes
a seguir (nesta ordem): Juliana, Caio, Pedro, Marcelo, Tas, Ana, Jos, Soraia, Zito, Bete, Deise,
Ricardo.
3. Verdadeiro ou Falso? O formato de uma rvore binria de busca depende da ordem em que os
ns foram inseridos nela.
4. Desenhe uma rvore binria de busca com 5 ns que seja tambm uma rvore ziguezague.
NOTAS DE AULA RVORES
PROFS: FBIO PROTTI E JLIO SILVEIRA 13
8. Remova a raiz da rvore binria de busca abaixo, SUBSTITUINDO SEU N por um de MAIOR
VALOR. DESENHE APENAS A VERSO FINAL depois de todos os ajustes.
G T
D J R Z
A F M X
50, 30, 85, 65, 60, 10, 45, 25, 40, 95, 90, inseridos NESTA ORDEM.
10. (ENADE 2011): Suponha que se queira pesquisar a chave 287 em uma rvore binria de busca
com chaves entre 1 e 1 000. Durante uma pesquisa como essa, uma sequncia de chaves
examinada. Cada sequncia abaixo uma suposta sequncia de chaves examinadas em uma
busca da chave 287..
a) I.
b) III.
c) I e II.
d) II e IV.
e) III e IV.