Pesquisar este blog

quinta-feira, 12 de agosto de 2010

Arvore binária simples com os três métodos de caminhamento

/*
 * Árvore binária simples com os três métodos de caminhamento: 
 *   Pré-Fixado 
 *      Central 
 *   Pós-Fixado
 * 
 * Autor: Everton Agilar 
 * Data: 12/08/2010
 * 
 */


package aula.arvore;

public class Arvore {
 int valor;
 Arvore esq;
 Arvore dir;

 public Arvore(int valor){
  this.valor = valor;
  this.esq = null;
  this.dir = null;
 }
 
 public void add(Arvore no){
  if (no.valor < this.valor){
   if (esq == null){
    esq = no;
   }else {
    esq.add(no);
   }
  }
  else {
   if (no.valor > this.valor){
    if (dir == null){
     dir = no;
    }
    else {
     dir.add(no);
    }
   }
  }
 }
 
 public void caminhamentoPreFixado(){
  System.out.printf("%d%n", valor);  // a raiz é acessada por primeiro
  if (esq != null) 
   esq.caminhamentoPreFixado();
  if (dir != null) 
   dir.caminhamentoPreFixado();
 }
 
 public void caminhamentoCentral(){
  if (esq != null) 
   esq.caminhamentoCentral();
  System.out.printf("%d%n", valor);  // a raiz é acessada no meio   
  if (dir != null) 
   dir.caminhamentoCentral();
 }

 public void caminhamentoPosFixado(){
  if (esq != null) 
   esq.caminhamentoPosFixado();
  if (dir != null) 
   dir.caminhamentoPosFixado();
  System.out.printf("%d%n", valor);  // a raiz é a última acessada
 }

 public static void main(String[] args) {
  System.out.println("Demonstração de formas de caminhamento em árvore binária\n");
  
  Arvore arv = new Arvore(10);
  arv.add(new Arvore(8));
  arv.add(new Arvore(12));
  arv.add(new Arvore(4));
  arv.add(new Arvore(14));
  arv.add(new Arvore(2));
  arv.add(new Arvore(1));
  
  System.out.println("Caminhamento Pré-Fixado:");
  arv.caminhamentoPreFixado();
  
  System.out.println("\nCaminhamento In-Fixado ou Central:");
  arv.caminhamentoCentral();

  System.out.println("\nCaminhamento Pós-Fixado:");
  arv.caminhamentoPosFixado();
 }
}

Nenhum comentário:

Postar um comentário