Você está na página 1de 50

rvores

Estrutura de dados

Prof. MSc. Elton Sarmanho


eltonsarmanho@gmail.com

http://www.campuscameta.ufpa.br/

CONCEITO
No Lineares
Elementos que as compem no esto
armazenados de forma sequencial
No esto todos encadeados

http://www.campuscameta.ufpa.br/

ARVORE BINRIA
um conjunto finito de Elementos, onde
cada elemento denominado N ou Nodo e
o primeiro nodo chamado de RAIZ da
rvore.
Esse conjunto pode estar vazio ou ser
particionado em 3 subconjuntos distintos:
1 subconjunto n raiz
2 subconjunto sub-rvore direita
3 subconjunto sub-rvore esquerda
http://www.campuscameta.ufpa.br/

ARVORE BINRIA

http://www.campuscameta.ufpa.br/

ARVORE BINRIA - PROPRIEDADES


nodo {n} sub-rvore direita, n > raiz
nodo {n} sub-rvore esquerda, n < raiz
sub-rvore uma rvore Binria

http://www.campuscameta.ufpa.br/

ARVORE BINRIA - PROPRIEDADES


O grau (Gn) de um nodo n representa o seu
nmero de sub-rvores.
nodo {n} | Gn = 0 , Nodo Folha ou Terminal

http://www.campuscameta.ufpa.br/

ARVORE BINRIA - PROPRIEDADES

Nodo Pai
Nodo Irmo
Nodo Filho
Nodo Folha
Nodo Ancestral
Nodo Descendente

http://www.campuscameta.ufpa.br/

ARVORE BINRIA - PROPRIEDADES

http://www.campuscameta.ufpa.br/

ARVORE BINRIA - PROPRIEDADES

http://www.campuscameta.ufpa.br/

ARVORE BINRIA - PROPRIEDADES

http://www.campuscameta.ufpa.br/

ARVORE BINRIA - PROPRIEDADES


Nvel (N) de um nodo
a sua distncia do n raiz.

Altura ou profundidade de uma rvore


o nvel do nodo mais distante da raiz.

http://www.campuscameta.ufpa.br/

ARVORE BINRIA - PROPRIEDADES


Podemos representar Nmero Mximo de
Nodos (NMN) em nvel da rvore binria por
2n, onde n o nvel em questo

http://www.campuscameta.ufpa.br/

ARVORE BINRIA - PROPRIEDADES


rvore estritamente Binria
rvore em que todos os ns tm 0 ou 2 filhos

http://www.campuscameta.ufpa.br/

ARVORE BINRIA - PROPRIEDADES


rvore Completa
rvore em que todos os nodos com menos de
dois filhos ficam no ltimo e no penltimo filho

http://www.campuscameta.ufpa.br/

ARVORE BINRIA - PROPRIEDADES


rvore Cheia
rvore estritamente binria e completa

http://www.campuscameta.ufpa.br/

ARVORE BINRIA - OPERAES

Nodo
Inserir um nodo
Remover Nodo
Percurso
In-Ordem
Pr-ordem
Ps-ordem

Esvaziar rvore
http://www.campuscameta.ufpa.br/

NODO

http://www.campuscameta.ufpa.br/

http://www.campuscameta.ufpa.br/

ARVORE BINRIA - OPERAES


Insero de Nodo
As propriedades de uma rvore devem ser
obedecidas
Todo novo nodo sempre uma folha
47

25

11

77

43

65

93
http://www.campuscameta.ufpa.br/

NODO

http://www.campuscameta.ufpa.br/

ARVORE BINRIA - OPERAES


Remoo de Nodo
o filho da direita, que o mais velho, assume o
lugar do nodo pai.
47

25

11

77

43

65

93
http://www.campuscameta.ufpa.br/

ARVORE BINRIA - OPERAES


Remoo de Nodo
o filho da direita, que o mais velho, assume o
lugar do nodo pai.
47

25

11

93

43

65
http://www.campuscameta.ufpa.br/

ARVORE BINRIA - OPERAES


Remoo de Nodo
o filho da direita, que o mais velho, assume o
lugar do nodo pai.
47

25

11

77

43

65

93
http://www.campuscameta.ufpa.br/

ARVORE BINRIA - PERCURSO


Pr-ordem, In-ordem e Ps-ordem
Todos mtodos podem ser definidos
recursivamente e se baseiam em trs
operaes bsicas:
visitar a raiz, percorrer a subrvore da esquerda e
percorrer a subrvore da direita.
A nica diferena entre estes mtodos a ordem
em que estas operaes so executadas.

http://www.campuscameta.ufpa.br/

ARVORE BINRIA - PERCURSO


Pr-ordem
Se rvore vazia, ento fim
1. processa valor no nodo
2. percorrer em pr-ordem a sub-rvore esquerda
3. percorrer em pr-ordem a sub-rvore direita
47
47 25 11 43 77 65 93
25

11

77

43

65

http://www.campuscameta.ufpa.br/
93

ARVORE BINRIA - PERCURSO


Pr-ordem
CODE

http://www.campuscameta.ufpa.br/

ARVORE BINRIA - PERCURSO


In-ordem
Se rvore vazia, ento fim
1. percorrer em in-ordem a sub-rvore esquerda
2. processa valor no nodo
3. percorrer em in-ordem a sub-rvore direita
47
11 25 43 47 65 77 93
25

11

77

43

65

http://www.campuscameta.ufpa.br/
93

ARVORE BINRIA - PERCURSO


In-ordem
CODE

http://www.campuscameta.ufpa.br/

ARVORE BINRIA - PERCURSO


Pos-ordem
Se rvore vazia, ento fim
1. percorrer em pos-ordem a sub-rvore esquerda
2. percorrer em pos-ordem a sub-rvore direita
3. processa valor no nodo
47
11 43 25 65 93 77 47
25

11

77

43

65

http://www.campuscameta.ufpa.br/
93

ARVORE BINRIA - PERCURSO


Ps-ordem
CODE

http://www.campuscameta.ufpa.br/

ARVORE AVL
Criada em 1962 por Adelson-Velsky e Landis
uma rvore binria balanceada
uma rvore que obedece a todas as
propriedades da rvore binria
nodo {n} sub-rvore esquerda (sae) e direita
(sad) | diferena entre Asad e Asae {1, 0 ou -1}

http://www.campuscameta.ufpa.br/

ARVORE AVL

http://www.campuscameta.ufpa.br/

ARVORE AVL
Se a diferena de A entre as sub-rvores de
um n > 1 ou < -1, a rvore est
desbalanceada
haver uma rotao

http://www.campuscameta.ufpa.br/

RVORE AVL

http://www.campuscameta.ufpa.br/

ROTAO SIMPLES ESQUERDA (2,1)

alt_d=1
alt_e=0
dif = 1-0 = 1

8
alt_d=0
alt_e=0
dif = 0-0 = 0

rvore Balanceada

http://www.campuscameta.ufpa.br/

ROTAO SIMPLES ESQUERDA (2,1)

N desbalanceado

N filho do N desbalanceado

alt_d=2
alt_e=0
dif = 2-0 = 2

alt_d=1
12
alt_e=0
dif = 1-0 = 1 alt_d=0
alt_e=0
dif = 0-0 = 0
rvore desbalanceada
Rotao Simples Esquerdahttp://www.campuscameta.ufpa.br/

ROTAO SIMPLES ESQUERDA (2,1)

8
12

rvore desbalanceada
http://www.campuscameta.ufpa.br/

ROTAO SIMPLES ESQUERDA (2,1)


alt_d=1
alt_e=1
dif = 1-1 = 0

12

alt_d=0
alt_e=0
dif = 0-0 = 0

alt_d=0
alt_e=0
dif = 0-0 = 0

rvore balanceada
http://www.campuscameta.ufpa.br/

RVORE AVL

http://www.campuscameta.ufpa.br/

ROTAO SIMPLES ESQUERDA (2,0)


alt_d=2
alt_e=0
dif = 2-0 = 2
10
12

11
alt_d=0
alt_e=0
dif = 0-0 = 0

alt_d=1
alt_e=1
dif = 1-1 = 0

14
alt_d=0
alt_e=0
dif = 0-0 = 0

http://www.campuscameta.ufpa.br/

ROTAO SIMPLES ESQUERDA (2,0)


alt_d=2
alt_e=0
dif = 2-0 = 2
10
12

11

alt_d=1
alt_e=1
dif = 1-1 = 0

14
alt_d=0
alt_e=0
dif = 0-0 = 0

alt_d=0
alt_e=0
dif = 0-0 = 0

Rotao Simples Esquerda


http://www.campuscameta.ufpa.br/

ROTAO SIMPLES ESQUERDA (2,0)


alt_d=1
alt_e=1
dif = 1-1 = 0
alt_d=0
alt_e=0
dif = 0-0 = 0

12

14
10

alt_d=0
alt_e=0
dif = 0-0 = 0

11

alt_d=0
alt_e=0
dif = 0-0 = 0

http://www.campuscameta.ufpa.br/

ROTAO SIMPLES ESQUERDA (2,0)


alt_d=1
alt_e=2
dif = 1-2 = -1
alt_d=1
alt_e=0
dif = 1-0 = 1

12

14
10

alt_d=0
alt_e=0
dif = 0-0 = 0

11

alt_d=0
alt_e=0
dif = 0-0 = 0

http://www.campuscameta.ufpa.br/

RVORE AVL

http://www.campuscameta.ufpa.br/

ROTAO DUPLA (2,-1)


alt_d=2
alt_e=0
dif = 2-0 = 2
6

alt_d=0
alt_e=1
dif = 0-1 = -1

alt_d=0
alt_e=0
dif = 0-0 = 0

http://www.campuscameta.ufpa.br/

ROTAO DUPLA (2,-1)


alt_d=2
alt_e=0
dif = 2-0 = 2
6

alt_d=1
alt_e=0
dif = 1-0 = 1

8
alt_d=0
alt_e=0
dif = 0-0 = 0

http://www.campuscameta.ufpa.br/

ROTAO DUPLA (2,-1)


alt_d=1
alt_e=1
dif = 1-1 = 0

6
alt_d=0
alt_e=0
dif = 0-0 = 0

8
alt_d=0
alt_e=0
dif = 0-0 = 0

http://www.campuscameta.ufpa.br/

VANTAGENS DE USAR RVORE AVL


Nas operaes de inseres e excluses, procura-se
executar uma rotina de balanceamento tal que as
alturas das sub-rvores esquerda e sub-rvores
direita tenham alturas bem prximas
Melhora o desempenho na busca de valores
Em uma rvore desbalanceada de 10000 ns, so
necessrias 5000 comparaes para efetuar uma busca, j
numa rvore AVL, com o mesmo nmero de ns, essa
mdia cai para 14 comparaes
Vale lembrar que voc poder balancear uma rvore em
tempo de execuo ou no.
http://www.campuscameta.ufpa.br/

REFERNCIAS
Estrutura de Dados - Java e C++ - Ana
Fernanda - Graziela Santos
Introduo ao Java.
Peter Jandl Junior.
So Paulo: Berkeley - 2002.
Captulo 3: Java e a Orientao a Objetos, pg.
55..114.

Java: como Programar.


Deitel & Deitel.
Pearson Prentice Hall, 2010, 8 Edio.
http://www.campuscameta.ufpa.br/

OBRIGADO!

Dvidas?
Prof. MSc. Elton Sarmanho
eltonsarmanho@gmail.com

http://www.campuscameta.ufpa.br/

Você também pode gostar