Árvores

7
Árvores Passeios

description

Árvores. Passeios. Árvores - Passeios. Realizar um passeio numa árvore binária deve ser entendido como visitar de forma sistemática, cada um de seus nós, desenvolvendo um certo processamento. Podemos considerar quatro tipos de passeios: Em-ordem - PowerPoint PPT Presentation

Transcript of Árvores

Page 1: Árvores

Árvores

Passeios

Page 2: Árvores

Árvores - Passeios

Realizar um passeio numa árvore binária deve ser entendido como visitar de forma sistemática, cada um de seus nós, desenvolvendo um certo processamento. Podemos considerar quatro tipos de passeios:– Em-ordem– Pré-ordem (também conhecido como passeio em

profundidade)– Pós-ordem– Em-nível

Page 3: Árvores

Árvores - Passeios

Para facilitar a compreensão dos três primeiros tipos, vamos utilizar um analogia com as notações que uma expressão aritmética pode ser escrita: infixa, prefixa e pósfixa.

Notação Seqüência Equivalência

Infixa Exibir a folha esquerda ( E ) Em-ordem

Exibir a raiz ( R )

Exibir a folha direita ( D )

Prefixa Exibir a raiz ( R ) Pré-ordem

Exibir a folha esquerda ( E )

Exibir a folha direita ( D )

Pósfixa Exibir a folha esquerda ( E ) Pós-ordem

Exibir a folha direita ( D )

Exibir a raiz ( R )

Page 4: Árvores

Árvores - Passeios

Pela análise na figura da representação da expressão A + B como árvore binária e a analogia realizada a partir dela, percebemos que a seqüência básica de acesso ERD pode ser generalizada

Na verdade, cada subárvore não precisa se restringir a uma única folha:– Exibir a subárvore esquerda ( E)– Exibir a raiz ( R)– Exibir a subárvore direita ( D )

Podemos observar que a seqüência ERD tornou-se recursivas Ambas as subárvores devem ser impressas também em-ordem

e a recursão pára quando chegamos a subárvores nulas As seqüências pré-ordem e pós-ordem podem ser

generalizadas segundo o mesmo raciocínio

Page 5: Árvores

Árvores – Passeios - Implementação

O método para o passeio em ordem. Para os outros, basta alterar a posição da operação a ser realizada.

// Métodos da classe Nodepublic void inorder(Node t){ if (t!=NULL){ inorder(t.left); /* Alguma operação com o valor do nó */ inorder(t.right); }}

Page 6: Árvores

Árvores – Passeio em Nível

Parece ser o de mais fácil compreensão Entretanto, sua implementação é a mais complexa. Supondo que ele fosse aplicado à árvore da figura

abaixo, obteríamos s seqüência: d,b,e,a,c,f Observe que agora os nós são acessados, por nível,

da esquerda para a direita

Page 7: Árvores

Árvores – Passeio em Nível

Podemos usar uma fila contendo inicialmente apenas o nó raiz A partir daí, enquanto a fila não se tornar vazia, retiramos dela

um nós cujos filhos deverão ser colocados na fila, aí então, o nó retirado da fila pode ser exibido.

// Métodos da classe Nodevoid inlevel(Node t){ if (t!=null){ Queue q = new Queue(); q.Enqueue(t); while (q.Count > 0){

Node n = q.Dequeue() as Node; if (n.left!=null) q.Enqueue(n.left); if (n.right!=null) q.Enqueue(n.right); /* Alguma operação com o valor do nó */

} }}