You are on page 1of 4

Tipos de Percurso

http://www.icmc.usp.br/~sce182/arvbintr.html

ndice > rvore > rvore Binria > Tipos de Percurso

Instituto de Cincias Matemticas de So Carlos Departamento de Computao e Estatstica SCE182 - Algoritmos e Estruturas de Dados 1 Profs. Resp.: Graa Pimentel e Maria Cristina

Tipos de Percurso
Percorrer uma rvore visitando cada n uma nica vez gera uma sequncia linear de ns, e ento passa a ter sentido falar em sucessor e predecessor de um n segundo um determinado percurso. H trs maneiras recursivas de se percorrer rvores binrias.

Travessia em Pr-Ordem
1. 2. 3. 4. se rvore vazia; fim visitar o n raiz percorrer em pr-ordem a subrvore esquerda percorrer em pr-ordem a subrvore direita

Pr-ordem: ABDCEGFHI visita o n quando passar a sua esquerda notao pr-fix Exerccio: aplique para a expresso aritmtica ilustrada anteriormente

Travessia em In-Ordem
1. 2. 3. 4. se rvore vazia, fim percorrer em in-ordem a subrvore esquerda visitar o n raiz percorrer em in-ordem a subrvore direita

In-ordem:

1 de 4

25/2/2008 20:33

Tipos de Percurso

http://www.icmc.usp.br/~sce182/arvbintr.html

DBAEGCHFI visita o n quando passar embaixo do n notao in-fix Exerccio: aplique para a expresso aritmtica ilustrada anteriormente

Travessia em Ps-Ordem
1. 2. 3. 4. se rvore vazia, fim percorrer em Ps-Ordem a subrvore esquerda percorrer em Ps-Ordem a subrvore direita visitar o n raiz

Ps-Ordem

DBGEHIFCA visita o n quando passar a sua direita notao ps-fix Exerccio: aplique para a expresso aritmtica ilustrada anteriormente

Algoritmos de Percurso - verso recursiva


Procedure PreOrdem(N:tree); Begin

2 de 4

25/2/2008 20:33

Tipos de Percurso

http://www.icmc.usp.br/~sce182/arvbintr.html

If N <> nil Then Begin Processa(N); {p. ex. imprime} PreOrdem(N^.esq); PreOrdem(N^.dir); End; End; Procedure InOrdem(N:tree); Begin If N <> nil Then Begin InOrdem(N^.esq); Processa(N); {p. ex: imprime} InOrdem(N^.dir); End; End; Procedure PosOrdem(N:tree) Begin If N <> nil Then Begin PosOrdem(N^.esq); PosOrdem(N^.dir); Processa(N); {p.ex.: imprime} End; End;

Operaes Facilitadas pelos Algoritmos de Percurso:


Pesquisa se um elemento existe retorna true se elemento est na rvore rvore binria comum (no ABBusca) sem sentinela
Function Esta_Presente(t: tree; item: Telem): boolean; Begin Esta_Presente:= busca(t, item) <> nil; End;

Busca declarada apenas na implementation: Esta_Presente disponvel na interface Retorna nil se elemento no encontrado Usa Ps-Ordem para percorrer a rvore - visita equivale verificar se elemento encontrado
Function Busca(t:tree; item: Telem): Tree; Var achou: boolean; ptr: tree; Procedure Ps-Ordem(t:tree; var prt:tree; var achou:boolean); Begin If (t<>nil) and (not achou) then Begin Ps-Ordem(t^.esq,ptr,achou); if not achou then Ps-Ordem(t^.dir,ptr,achou); If not achou then If Igual(item, t^.info) Then Begin achou:=true; ptr:=t; End; End; End; {Ps-Ordem} Begin {busca}

3 de 4

25/2/2008 20:33

Tipos de Percurso

http://www.icmc.usp.br/~sce182/arvbintr.html

achou:=false; ptr:=nil; Ps-Ordem(t,ptr,achou); busca:=ptr; End; {busca}

Outra verso para busca Utiliza implicitamente percurso em Pr-Ordem


Function Busca1(t: tree; item: Telem): tree; Var achou:boolean; Function Local(t: tree; item: Telem; var achou:boolean):tree; Begin If not vazia (t) then If t^.info=item then local:=t; Else Begin local:=local(t^.esq, item, achou); If not achou Then local=local(t^.dir, item, achou); End; End; {local} Begin {busca1} busca1:= nil; busca1:=local(t, item, achou); End;

Tornar uma rvore vazia Desaloca todo o espao de memria da rvore e retorna a rvore ao estado equivalente ao define, isto , nula. Utiliza o algoritmo de Ps-Ordem para percurso
Procedure Tornar_Vazia(var t: tree); Begin If not Vazia(t) Then Begin Tornar_Vazia(t^.esq); Tornar_Vazia(t^.dir); Dispose(t); End; t:=nil; End;

Treinar o rastreamento dos Algoritmos de Travessia em rvore Binria.

Exerccios

rvore Balanceada

ndice

4 de 4

25/2/2008 20:33

You might also like