Advertisement
luishenriique

Atividade 03 - TAP II

Sep 5th, 2013
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.89 KB | None | 0 0
  1. package br.pucpr.ed;
  2.  
  3. /**
  4.  * Nó da árvore binária
  5.  *
  6.  * @author s.luis
  7.  */
  8. public class NoAB<E> {
  9.     private E dado;
  10.     private NoAB<E> esquerda, direita;
  11.  
  12.     /**
  13.      * Construtor
  14.      *
  15.      * @param d
  16.      *            O valor do dado que será armazenado no nó
  17.      */
  18.     public NoAB(E d) {
  19.         dado = d;
  20.     }
  21.  
  22.     /**
  23.      * Adciona um novo nó a esquerda da instância considerada
  24.      *
  25.      * @param d
  26.      *            Valor a ser guardado no novo nó
  27.      * @throws Exception
  28.      *             Erro, já existe dado na esquerda
  29.      */
  30.     public NoAB<E> adcionaEsquerda(E d) throws Exception {
  31.         if (esquerda != null)
  32.             throw new Exception("Erro, já existe dado na esq");
  33.         // criando o novo nó
  34.         NoAB<E> novoNo = new NoAB<E>(d);
  35.         // guardando a referência do mesmo á esquerda do nó
  36.         esquerda = novoNo;
  37.         return novoNo;
  38.     }
  39.  
  40.     /**
  41.      * Adciona um novo nó a direita da instância considerada
  42.      *
  43.      * @param d
  44.      *            Valor a ser guardado no novo nó
  45.      * @throws Exception
  46.      *             Erro, já existe dado na esquerda
  47.      */
  48.     public NoAB<E> adcionaDireita(E d) throws Exception {
  49.         if (direita != null)
  50.             throw new Exception("Erro, já existe dado na dir");
  51.         // criando o novo nó
  52.         NoAB<E> novoNo = new NoAB<E>(d);
  53.         // guardando a referência do mesmo á direita do nó
  54.         direita = novoNo;
  55.         return novoNo;
  56.     }
  57.  
  58.     public E getDado() {
  59.         return dado;
  60.     }
  61.  
  62.     public void setDado(E dado) {
  63.         this.dado = dado;
  64.     }
  65.  
  66.     public NoAB<E> getEsquerda() {
  67.         return esquerda;
  68.     }
  69.  
  70.     public void setEsquerda(NoAB<E> esquerda) {
  71.         this.esquerda = esquerda;
  72.     }
  73.  
  74.     public NoAB<E> getDireita() {
  75.         return direita;
  76.     }
  77.  
  78.     public void setDireita(NoAB<E> direita) {
  79.         this.direita = direita;
  80.     }
  81.  
  82. }
  83.  
  84. package br.pucpr;
  85.  
  86. import br.pucpr.ed.NoAB;
  87.  
  88. public class MainAB {
  89.  
  90.     public static void main(String[] args) throws Exception {
  91.         NoAB<Integer> raiz = new NoAB<Integer>(34);
  92.         // inserindo os filhos
  93.             // nó esquerdo raiz
  94.             NoAB<Integer> no80 = raiz.adcionaEsquerda(80);
  95.                 no80.adcionaEsquerda(40);
  96.                 NoAB<Integer> no43 = no80.adcionaDireita(43);
  97.                     NoAB<Integer> no13 = no43.adcionaEsquerda(13);
  98.                         NoAB<Integer> no26 = no13.adcionaEsquerda(26);
  99.                             no26.adcionaDireita(90);
  100.                     no43.adcionaDireita(75);
  101.            
  102.             // nó direito raiz
  103.             NoAB<Integer> no55 = raiz.adcionaDireita(55);
  104.                 NoAB<Integer> no5 = no55.adcionaDireita(5);
  105.                     no5.adcionaEsquerda(1);
  106.                     no5.adcionaDireita(17);
  107.            
  108.            
  109.        
  110.         System.out.println("Pre-Ordem");
  111.         preOrdem(raiz);
  112.         System.out.println("\nEm-Ordem");
  113.         emOrdem(raiz);
  114.         System.out.println("\nPós-Ordem");
  115.         posOrdem(raiz);
  116.         System.out.println("\n\nTerminou.");
  117.  
  118.     }
  119.  
  120.     /**
  121.      * Pré-Ordem: tratar raiz, percorrer sae, percorrer sad
  122.      * Neste exemplo utilizaremos tratar como sinônimo de imprimir
  123.      */
  124.     public static void preOrdem (NoAB<Integer> raiz){
  125.         // condição de parada
  126.         if(raiz == null)
  127.             return;
  128.         // 1) tratar raiz
  129.         System.out.print(raiz.getDado() + ", ");
  130.         // 2) percorrer sae
  131.         preOrdem(raiz.getEsquerda());
  132.         // 3) percorrer sad
  133.         preOrdem(raiz.getDireita());
  134.     }
  135.    
  136.     /**
  137.      * Em-Ordem: percorrer sae, tratar raiz, percorrer sad
  138.      * Neste exemplo utilizaremos tratar como sinônimo de imprimir
  139.      */
  140.     public static void emOrdem (NoAB<Integer> raiz){
  141.         // condição de parada
  142.         if(raiz == null)
  143.             return;
  144.         // 1) percorrer sae
  145.         emOrdem(raiz.getEsquerda());
  146.         // 2) tratar raiz
  147.         System.out.print(raiz.getDado() + ", ");
  148.         // 3) percorrer sad
  149.         emOrdem(raiz.getDireita());
  150.     }
  151.    
  152.     /**
  153.      * Pós-Ordem: percorrer sae, percorrer sad, tratar raiz
  154.      * Neste exemplo utilizaremos tratar como sinônimo de imprimir
  155.      */
  156.     public static void posOrdem (NoAB<Integer> raiz){
  157.         // condição de parada
  158.         if(raiz == null)
  159.             return;
  160.         // 1) percorrer sae
  161.         posOrdem(raiz.getEsquerda());
  162.         // 2) percorrer sad
  163.         posOrdem(raiz.getDireita());
  164.         // 3) tratar raiz
  165.         System.out.print(raiz.getDado() + ", ");
  166.        
  167.     }
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement