You are on page 1of 41

ESTRUTURA DE DADOS E ALGORITMOS II

rvores binrias
rvores binrias completas
rvores estritamente binrias
rvores de busca binria

Prof. Yilian Monier Leyva


rvore binria
Uma rvore binria um conjunto finito de
elementos que est vazio ou particionado em
trs subconjuntos:
raiz da rvore - elemento inicial (nico);
subrvore da esquerda - se vista isoladamente
compe uma outra rvore;
subrvore da direita - se vista isoladamente
compe uma outra rvore.
Representao de uma rvore
binria
s rvores binrias seguem sendo aplicveis as
definies:
Grau (igual a 2 para todos os nodos)
Folha(nodo com filhos rvores vazias)
Nvel de profundidade
Peso ou altura
Filho, pai, irmo, ancestral, decendente
Percursos

Os percursos em, Pr-ordem, Ps-ordem e


Ordem-Simtrica de uma rvore vaza a lista
vaza.
Percurso em pr-ordem
(R, TEZQ, TDIR)
visita a raiz da rvore.
Percorre em pr-ordem a subrvore esquerda
da raiz.
Percorre em pr-ordem a subrvore direita da
raiz.
Percurso em ps-ordem
(TEZQ, TDIR, R)
Percorre em ps-ordem a subrvore esquerda
da raiz.
Percorre em ps-ordem a subrvore direita da
raiz.
visita a raiz da rvore.
Percurso em ordem-simetrica
(TEZQ, R, TDIR)
Percorre em ordem-simetrica a subrvore
esquerda da raiz.
visita a raiz da rvore.
Percorre em ordem-simetrica a subrvore
direita da raiz.
OPERAES DO TDA RVORE BINRIA
A rvore binria mantm basicamente as
mesmas operaes da rvore genrica.

Uma operao importante a adicionar a de


criar uma rvore vazia.
Isto seria adicionar um novo construtor que no
receba parmetros e que crie um objeto de tipo
rvore que possa identificar-se como vazio.
OPERAES DO TDA RVORE BINRIA
Estas operaes se mantm:

Raiz(): T Grau(): int


Peso() : int EVazia(): lgico
Efolha(): bool PreOrdem() : Lista
Esquerda (): rvore PosOrdem() : Lista
Direita (): rvore OrdemSimetrica() : Lista
AoLargo() : Lista
OPERAES DO TDA RVORE BINRIA
Esquerda()
Pr-condio: A rvore binria no vazia
Ps-condio: Retorna uma copia da sub-rvore esquerda
Direita()
Pr-condio: A rvore binria no vazia
Ps-condio: Retorna uma copia da sub-rvore direita
EVazia()
Uma rvore binria vazia se:
raiz=NULL,
sub-rvore direita= NULL,
sub-rvore esquerda= NULL
Estrutura de dados para a
representao de rvore binria
rvores estritamente binrias
As rvores onde cada nodo que no seja folha
numa rvore binria tem subrvores esquerda
e direita no vazias so conhecidas como
rvores estritamente binrias.
Uma rvore estritamente binria com n folhas
tem 2n - 1 ns.
rvore Binria Completa
rvore Binria Completa
rvores de Busca Binria
Uma rvore de busca binria (Binary search
tree) uma rvore binria onde a informao
que o nodo esquerdo possui menor ou igual
informao da raiz.
De forma anloga, a informao que o nodo
direito possui maior ou igual informao
da raiz.
rvores de Busca Binria
O objetivo de organizar dados em rvores de busca
binria facilitar a tarefa de procura de um
determinado valor.

A partir da raiz e de posse da informao a ser


encontrada, possvel saber qual o caminho a ser
percorrido at encontrar o nodo desejado.

Para tanto, basta verificar se o valor procurado maior,


menor ou igual ao nodo que se est posicionando.
rvores de Busca Binria
Deve-se observar que no existe uma nica
forma de organizar um conjunto de informaes
em uma rvore de busca binria, a final,
dependendo da escolha do nodo raiz, obtm-se
rvores diferentes.
rvores de Busca Binria
Na figura os valores {2, 3, 4, 5, 7, 8} so
organizados em rvores de busca de duas
maneiras diferentes.
Operaes em rvores Binrias
Pesquisa : Buscar(T) : lgico
Insero : Inserir(T) : void
Excluso : Eliminar (T): void
Antecessor
Sucessor
Maior elemento
Menor elemento
Percursos(pr-ordem, ps-ordem, ordem-
simetrica)
Pesquisa
Para a busca em uma rvore binria por um valor
especfico deve-se:
1- Examinar a raiz. Se o valor for igual raiz, o valor
existe na rvore.

2- Se o valor for menor do que a raiz, ento deve-se


buscar na subrvore da esquerda, e assim
recursivamente em todos os nodos da subrvore.

3- Se o valor for maior que a raiz, ento deve-se


buscar na subrvore da direita. At alcanar o nodo-
folha da rvore, encontrando-se ou no o valor
requerido.
Insero
A insero comea com uma busca procurando
pelo valor na rvore.

Se o elemento no existir na vore, alcanada


a folha, e ento inserido o valor nesta posio.

Ou seja, examinada a raiz e introduzido um


novo nodo na subrvore da esquerda, se o valor
novo menor do que a raiz, ou na subrvore da
direita, se o valor novo for maior do que a raiz.
Sucessor
Se um elemento x tem filho direito distinto do vazio
porque h elementos maiores que ele, recordando que
pela prpria estrutura da ABB ao mover-se esquerda
estamos caminhando para elementos menores, ento o
filho mais esquerdo da sub-rvore direita de x, ser seu
sucessor.

Se o elemento x no tem filho direito, o sucessor, se


estiver, encontrar-se para cima na rvore e ser o
primeiro nodo que tenha a x em sua sub-rvore
esquerda. Se se chegar raiz e no se cumpriu isto
porque o elemento no tem sucessor na rvore.
Antecessor
Se o elemento x tem filho esquerdo distinto do vazio
porque h elementos menores que ele, recordando
que pela prpria estrutura da ABB ao mover-se
direita estamos caminhando para elementos
maiores, ento o filho mais direita da sub-rvore
esquerda de x ser seu antecessor.

Se o elemento x no tem filho esquerdo o


antecessor, se estiver, encontrar-se para cima na
rvore e ser o primeiro nodo que tenha a x na sua
sub-rvore direita. Se se chegar raiz e no se
cumpriu isto porque o elemento no tem
antecessor na rvore.
Excluso
Para excluir um n de uma rvore binria, deve-
se considerar trs casos distintos para realizar a
excluso:
Excluso na folha
Excluso de n com um filho
Excluso de n com dois filhos
Excluso
Excluso na folha
A excluso de um nodo que se encontra no fim da rvore, isto
, que seja uma folha, o caso mais simples de excluso.
Basta remover o nodo da rvore.
Excluso
Excluso de nodo com um filho
Caso o nodo que ser excludo tenha um nico filho, o pai do
nodo (av do filho) herda o filho. Isto , o filho assume a
posio do pai na rvore.
Excluso
Excluso de nodo com dois filhos
Se o nodo a ser excludo tiver dois filhos, o
processo de excluso poder operar de duas
maneiras diferentes:
1. Substituir o valor do nodo a ser retirado pelo
valor sucessor (o nodo mais esquerda da
subrvore direita).
2. Substituir o valor do nodo a ser retirado pelo
valor antecessor (o nodo mais direita da
subrvore esquerda).
Excluso
Excluso de n com dois filhos
Excluir(50)

Realizada a escolha,
remove-se o nodo sucessor
(ou antecessor).

O nodo com valor 50 ser


excludo e possui como
sucessor o valor 55 e como
antecessor imediato do 55
o nodo com valor 53.
Excluso
Excluso de n com dois filhos

Desta forma, o
filho (53) do nodo com valor
55 ser promovido no lugar
do nodo a ser excludo (50),

O nodo 55 continuar em
sua posio e o filho do
nodo 53(no caso o nodo
com valor 54) ser passado
para o nodo de valor 55.
Excluso
Excluso de n com dois filhos
Maior elemento
O maior elemento da rvore, nodo com o maior
valor, ser encontrado sempre na folha mais
direita da rvore.

Para encontrar o maior valor, basta procurar a


partir da raiz sempre na subrvore da direita.
Menor elemento
O menor elemento da rvore, nodo com o
menor valor, ser encontrado sempre na folha
mais esquerda da rvore.

Para encontrar o menor valor, basta procurar a


partir da raiz sempre na subrvore da esquerda.
Percursos
pr-ordem - os filhos de um nodo so
processados aps o nodo raiz.

ps-ordem - os filhos so processados antes


do nodo.

em-ordem ou simtrica - se processa o filho


esquerda, o nodo, e finalmente o filho
direita.
Orientaes para o estudo
Analizar cuidadosamente os
exemplos e definies dadas.
Realizar a implementao das
diferentes operaes descritas en
aula para as rvores binrias.
EXERCICIOS
1. Dado o percurso em pr-ordem e ordem-
semetrica, reconstruir a rvore binria.
a) Pr-ordem: A, B, D, E, C, F
Ordem Simetrica: D, B, E, A, C, F

b) Pr-ordem : A, B, D, G, C, E, H, I, J, F
Ordem Simetrica: B, D, G, A, E, J, I, H, C, F
EXERCICIOS
2. Dada a seguinte seqencia de nmeros
construir a rvore binria de busca, suponha
que parte da rvore vazia e que os elementos
vo dando na seguinte ordem:
a) 11, 23, 34, 42, 59, 60, 75
b) 44, 27 1, 39, 68, 51, 79
c) 1, 6, 7, 2, 4, 3, 5
EXERCICIOS
3. Para a rvore Binria de Busca construdo na linha b
do exerccio anterior realizar as seguintes operaes:
a) Quantas comparaes fazem-se para encontrar o valor
79?
b) Inserir 35.
c) Inserir 84.
d) Inserir 51
e) Eliminar o 68.
f) Eliminar o 79.
g) Eliminar o 44.
EXERCICIOS

4. Realizar a definio da rvore de busca


binria.
Implemente cada um de seus mtodos,
fundamentalmente: Busca, Insero e
Eliminao.
Bibliografia
Data Structures, Algorithms and Object-Oriented Programming,
Gregory L. Heileman, University of New Mexico

Data Structures and Algoritms, A. V. Aho, J. Hopcroft, J. Ullman

Data Structures in C++, Timoty Budd

Fundamental of Data Structures, E. Horowitz & S. Sahni

Object Oriented Design Patters in C++, Bruno R. Preiss

You might also like