Você está na página 1de 4

Tipos de Percurso

Índice > Árvore > Árvore Binária > Tipos de Percurso

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

Instituto de Ciências Matemáticas de São Carlos Departamento de Computação e Estatística SCE182 - Algoritmos e Estruturas de Dados 1 Profs. Resp.: Graça Pimentel e Maria Cristina

Tipos de Percurso

Percorrer uma árvore visitando cada nó uma única vez gera uma sequência linear de nós, e então passa a ter sentido falar em sucessor e predecessor de um nó segundo um determinado percurso. Há três maneiras recursivas de se percorrer árvores binárias.

Travessia em Pré-Ordem

1. se árvore vazia; fim

2. visitar o nó raiz

3. percorrer em pré-ordem a subárvore esquerda

4. percorrer em pré-ordem a subárvore direita

esquerda 4. percorrer em pré-ordem a subárvore direita Pré-ordem: ABDCEGFHI visita o nó quando passar a

Pré-ordem:

ABDCEGFHI4. percorrer em pré-ordem a subárvore direita Pré-ordem: visita o nó quando passar a sua esquerda

visita o nó quando passar a sua esquerdaem pré-ordem a subárvore direita Pré-ordem: ABDCEGFHI notação pré-fix Exercício: aplique para a expressão

notação pré-fixABDCEGFHI visita o nó quando passar a sua esquerda Exercício: aplique para a expressão aritmética ilustrada

Exercício: aplique para a expressão aritmética ilustrada anteriormente aplique para a expressão aritmética ilustrada anteriormente

Travessia em In-Ordem

1. se árvore vazia, fim

2. percorrer em in-ordem a subárvore esquerda

3. visitar o nó raiz

4. percorrer em in-ordem a subárvore direita

In-ordem:

Tipos de Percurso

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

de Percurso http://www.icmc.usp.br/~sce182/arvbintr.html DBAEGCHFI visita o nó quando passar embaixo do nó

DBAEGCHFIde Percurso http://www.icmc.usp.br/~sce182/arvbintr.html visita o nó quando passar embaixo do nó notação in-fix

visita o nó quando passar embaixo do nóhttp://www.icmc.usp.br/~sce182/arvbintr.html DBAEGCHFI notação in-fix Exercício: aplique para a expressão

notação in-fixDBAEGCHFI visita o nó quando passar embaixo do nó Exercício: aplique para a expressão aritmética ilustrada

Exercício: aplique para a expressão aritmética ilustrada anteriormente aplique para a expressão aritmética ilustrada anteriormente

Travessia em Pós-Ordem

1. se árvore vazia, fim

2. percorrer em Pós-Ordem a subárvore esquerda

3. percorrer em Pós-Ordem a subárvore direita

4. visitar o nó raiz

Pós-Ordem

a subárvore direita 4. visitar o nó raiz Pós-Ordem DBGEHIFCA visita o nó quando passar a

DBGEHIFCAa subárvore direita 4. visitar o nó raiz Pós-Ordem visita o nó quando passar a sua

visita o nó quando passar a sua direitadireita 4. visitar o nó raiz Pós-Ordem DBGEHIFCA notação pós-fix E x e r c í

notação pós-fixDBGEHIFCA visita o nó quando passar a sua direita E x e r c í c

E x e r c í c i o : aplique para a expressão aritmética Exercício: aplique para a expressão aritmética ilustrada anteriormente

Algoritmos de Percurso - versão recursiva

Procedure PreOrdem(N:tree); Begin

Tipos de Percurso

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;

Operações Facilitadas pelos Algoritmos de Percurso:

Pesquisa se um elemento existe

retorna true se elemento está na árvorepelos Algoritmos de Percurso: Pesquisa se um elemento existe árvore binária comum (não é ABBusca) sem

árvore binária comum (não é ABBusca)um elemento existe retorna true se elemento está na árvore sem sentinela Function Esta_Presente(t: tree; item:

sem sentinelaestá na árvore árvore binária comum (não é ABBusca) Function Esta_Presente(t: tree; item: Telem): boolean; Begin

Function Esta_Presente(t: tree; item: Telem): boolean; Begin Esta_Presente:= busca(t, item) <> nil; End;

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

Busca declarada apenas na i m p l e m e n t a t i o n : implementation: Esta_Presente é disponível na interface

Retorna nil se elemento não encontradoEsta_Presente é disponível na i n t e r f a c e Usa Pós-Ordem para

Usa Pós-Ordem para percorrer a árvore - visita equivale à verificar se elemento é encontrado Pós-Ordem para percorrer a árvore - visita equivale à verificar se elemento é encontrado

Function Busca(t:tree; item: Telem): Tree; Var achou: boolean; ptr: tree;

Procedure Pós-Ordem(t:tree; var prt:tree; var achou:boolean); Begin If (t<>nil) and (not achou) then Begin Pós-Ordem(t^.esq,ptr,achou); if not achou then Pós-Ordem(t^.dir,ptr,achou);

If not achou then If Igual(item, t^.info) Then Begin achou:=true; ptr:=t; End;

End;

End;

{Pós-Ordem}

Begin

{busca}

Tipos de Percurso

achou:=false;

ptr:=nil;

Pós-Ordem(t,ptr,achou);

busca:=ptr;

End;

{busca}

Outra versão para busca

Utiliza implicitamente percurso em Pré-Ordem Pré-Ordem

Function Busca1(t: tree; item: Telem): tree; Var achou:boolean;

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

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:= nil;

{busca1}

busca1:=local(t, item, achou); End;

Tornar uma árvore vazia

Desaloca todo o espaço de memória da árvore e retorna a árvore ao estado equivalente ao define, isto é, nula.busca1:=local(t, item, achou); End; Tornar uma árvore vazia Utiliza o algoritmo de Pós-Ordem para percurso Procedure

Utiliza o algoritmo de Pós-Ordem para percurso Pós-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 Binária.

Exercícioso rastreamento dos Algoritmos de Travessia em Árvore Binária. Árvore Balanceada Índice 4 de 4 25/2/2008

Árvore BalanceadaTreinar o rastreamento dos Algoritmos de Travessia em Árvore Binária. Exercícios Índice 4 de 4 25/2/2008

Índiceo rastreamento dos Algoritmos de Travessia em Árvore Binária. Exercícios Árvore Balanceada 4 de 4 25/2/2008