Professional Documents
Culture Documents
http://www.icmc.usp.br/~sce182/arvbintr.html
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
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;
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
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;
Exerccios
rvore Balanceada
ndice
4 de 4
25/2/2008 20:33