Você está na página 1de 14

Algoritmos e Estrutura de Dados II

rvore Binria

Prof. Alcione Ferreira Algoritmos e Estruturas de Dados II

Definio
As rvores constituem estruturas no sequenciais com maior aplicao em computao sendo as rvores binrias as mais comuns. Uma rvore T dita binria tal que:

T = e a rvore dita vazia, ou Existe um n especial r, chamado raiz de T, e os restantes podem ser divididos em dois subconjuntos distintos, TrE e TrD, a subrvores esquerda e a direita de r, respectivamente, as quais so tambm rvores binrias.
Prof. Alcione Ferreira Algoritmos e Estruturas de Dados II 2

A B D C E

Prof. Alcione Ferreira Algoritmos e Estruturas de Dados II

Definio

rvore estritamente binria

uma rvore que possui em cada n 0 ou 2 filhos. Sua propriedade a seguinte:

rvore binria completa

Se v o n tal que alguma subrvore de v vazia, ento v se localiza ou no ltimo ou no penltimo nvel da rvore

rvore binria cheia

Sua propriedade a seguinte:

Se v um n com alguma de suas subrvores vazias, ento v se localiza no ltimo nvel


Prof. Alcione Ferreira Algoritmos e Estruturas de Dados II 4

Toda rvore cheia completa e estritamente binria.

Estritamente Binria

Binria Completa

Binria Cheia
Prof. Alcione Ferreira Algoritmos e Estruturas de Dados II 5

Representao

ARVORE_BIN Registro: chave inteiro; esq ARVORE_BIN; dir ARVORE_BIN; altura inteiro; Fim_Registro;

Prof. Alcione Ferreira Algoritmos e Estruturas de Dados II

Percurso
Para percorrer uma rvore binria deve-se visitar cada um de seus ns para fazer essa visita utilizaremos 3 tipos de percursos:

Em pr ordem Em ordem simtrica Em ps ordem

Para implementar esses percursos utilizaremos algoritmos recursivos.

Prof. Alcione Ferreira Algoritmos e Estruturas de Dados II

Percurso em Pr Ordem
Para utilizar esse tipo de percurso iremos seguir os seguintes passos:

Visitar a raiz; Percorrer sua subrvore esquerda, em pr ordem; Percorrer sua subrvore direita, em pr ordem

Uma aplicao bem interessante para esse tipo de percurso pode ser visualizado em uma rvore de expresses. O resultado desse percurso corresponde a notao polonesa.
Prof. Alcione Ferreira Algoritmos e Estruturas de Dados II 8

Procedimento PreOrdem(no: ARVORE_BIN) Incio visitar(no); Se no^.esq Faa PreOrdem(no^.esq); Fim_Se Se no^.dir Faa PreOrdem(no^.dir); Fim_Se Fim
Prof. Alcione Ferreira Algoritmos e Estruturas de Dados II 9

Percurso em Ordem Simtrica


Este tipo de percurso muito utilizado para rvores binrias de busca, os passos que compe so os seguintes:

Percorrer sua subrvore esquerda, em ordem simtrica; Visitar raiz; Percorrer sua subrvore direita, em ordem simtrica.

Prof. Alcione Ferreira Algoritmos e Estruturas de Dados II

10

Procedimento Simet(no: ARVORE_BIN) Incio Se no^.esq Faa Simet(no^.esq); Fim_Se Visitar(no); Se no^.dir Faa Simet(no^.dir); Fim_Se Fim
Prof. Alcione Ferreira Algoritmos e Estruturas de Dados II 11

Percurso em Ps Ordem
Neste ltimo tipo a visita da raiz feita em ltima etapa, vejamos os passos:

Percorrer sua subrvore esquerda, em ps ordem; Percorrer sua subrvore direita, em ps ordem; Visitar a raiz.

Utilizamos esse percurso para o clculo da altura de todos os ns de uma rvore.

Prof. Alcione Ferreira Algoritmos e Estruturas de Dados II

12

Procedimentos PosOrdem(no: ARVORE_BIN) Incio Se no^.esq Faa PosOrdem(no^.esq); Fim_Se Se no^.dir Faa PosOrdem(no^.dir); Fim_Se Visita (no); Fim
Prof. Alcione Ferreira Algoritmos e Estruturas de Dados II 13

Procedimento Visita(no: ARVORE_BIN) Variveis altD, altE: inteiro; Incio Se no^.esq Faa altE (no^.esq)^.altura; Fim_Se Seno Faa altE 0; Fim_Seno Se no^.dir Faa altD (no^.dir)^.altura; Fim_Se Seno Faa altD 0; Fim_Seno Se altE > altD Faa no^.altura altE + 1; Fim_Se Seno Faa no^.altura altD + 1; Fim_Seno Fim
Prof. Alcione Ferreira Algoritmos e Estruturas de Dados II 14

Você também pode gostar