RSS

Arvore Binária Java

01 dez

    1. public class ArvoreBinaria 
    2. public class NoArvore 
    3.     { 
    4.         NoArvore noEsquerdo; 
    5.         NoArvore noDireito; 
    6. int dado; 
    7. public NoArvore( int dado ) 
    8.         { 
    9.             noEsquerdo = noDireito = null; 
    10. this.dado = dado; 
    11.         } 
    12. public void inserir( int valor ) 
    13.         { 
    14. if( valor < dado ) 
    15.            { 
    16. if( noEsquerdo == null ) 
    17.                { 
    18.                    noEsquerdo = new NoArvore( valor ); 
    19.                } 
    20. else
    21.                { 
    22.                    noEsquerdo.inserir( valor ); 
    23.                } 
    24.            } 
    25. else if( valor > dado ) 
    26.            { 
    27. if( noDireito == null ) 
    28.                { 
    29.                    noDireito = new NoArvore( valor ); 
    30.                } 
    31. else
    32.                { 
    33.                    noDireito.inserir( valor ); 
    34.                } 
    35.            } 
    36.         } 
    37.     } 
    38.      NoArvore raiz ; 
    39. public ArvoreBinaria() 
    40.      { 
    41.         raiz = null; 
    42.      } 
    43. public void inserirNo( int valor ) 
    44.      { 
    45. if( raiz == null ) 
    46.           { 
    47.              raiz = new NoArvore( valor ); 
    48.           } 
    49. else
    50.           { 
    51.               raiz.inserir( valor ); 
    52.           } 
    53.      } 
    54. // Método pre – ordem
    55. // Utilizado para percorrer a ávore na forma Prefixa
    56. public void preOrdem() 
    57.      { 
    58.          preOrdemAjudante( raiz ); 
    59.      } 
    60. // Método para percorrer a árvore em pre – ordem
    61. // utiliza a recursão para percorrer os nos da ávore
    62. public void preOrdemAjudante( NoArvore no ) 
    63.      { 
    64. if( no == null ) 
    65. return; 
    66.           System.out.println( no.dado + "" ); 
    67.           preOrdemAjudante( no.noEsquerdo ); 
    68.           preOrdemAjudante( no.noDireito ); 
    69.       } 
    70. // Método ordem simetrica
    71. // Utilizado para percorre a ávore na forma infixa
    72. public void ordemSimetrica() 
    73.       { 
    74.            ordemSimetricaAjudante( raiz ); 
    75.       } 
    76. // Método para percorrer a árvore em Ordem Simetrica
    77. // utiliza a recursão para percorrer os nos da ávore
    78. public void ordemSimetricaAjudante( NoArvore no) 
    79.       { 
    80. if( no == null ) 
    81. return; 
    82.           ordemSimetricaAjudante( no.noEsquerdo ); 
    83.           System.out.println( no.dado + "" ); 
    84.           ordemSimetricaAjudante ( no.noDireito ); 
    85.       } 
    86. // Método pós Ordem
    87. // Utilizado para percorrer a ávore na forma pósfixa
    88. public void posOrdem() 
    89.       { 
    90.           posOrdemAjudante( raiz ); 
    91.       } 
    92. // Método que percorre a árvore em Pós Ordem
    93. // Uliliza a recursão para percorrer os nos da árvore
    94. public void posOrdemAjudante( NoArvore no ) 
    95.       { 
    96. if( no == null ) 
    97. return; 
    98.           posOrdemAjudante( no.noEsquerdo ); 
    99.           posOrdemAjudante( no.noDireito ); 
    100.           System.out.println( no.dado + "" ); 
    101.       } 
    102. // Método para  para buscar o nivel do elemento
    103. // na arvoré ( Exercício 14 da lista de Estrutura de Dados )
    104. public void busca( int x  ) 
    105.       { 
    106.           buscaAjudante( raiz , x  ); 
    107.       } 
    108. int contador = 0; // variavél para controlar o nivel da arvoré
    109. // Método para percorrer a arvoré e achar o elemento
    110. public void buscaAjudante ( NoArvore no , int x ) 
    111.       { 
    112. if ( no == null ) 
    113.           { 
    114.               System.out.println( " Nivel -1 " ); 
    115.           } 
    116. else if ( no.dado == x ) 
    117.           { 
    118.               System.out.println(" Nivel " + contador ); 
    119.           } 
    120. else if ( no.dado > x ) 
    121.           { 
    122. if ( no != null ) 
    123.              { 
    124.                  contador ++; 
    125.                  buscaAjudante( no.noEsquerdo , x ); 
    126.              } 
    127.           } 
    128. else if ( no.dado < x ) 
    129.           { 
    130. if( no != null ) 
    131.               { 
    132.                   contador ++; 
    133.                   buscaAjudante(no.noDireito , x ); 
    134.               } 
    135.           } 
    136.       } 
    137. // Exercício 12
    138. public void retorna( int x ) 
    139.       { 
    140.           procuraAjudante( raiz, x ); 
    141.       } 
    142. // método para realizar sei la já não sei mais nada
    143. public void procuraAjudante ( NoArvore no , int x ) 
    144.       { 
    145. if ( no.dado == x ) 
    146.           { 
    147.               System.out.println( no.dado ); 
    148.           } 
    149. else if ( no.noDireito.dado == x ) 
    150.           { 
    151.                System.out.println ( no.dado ); 
    152.           } 
    153. else if ( no.noEsquerdo.dado == x ) 
    154.           { 
    155.               System.out.println( no.dado ); 
    156.           } 
    157. else if ( no.dado > x ) 
    158.           { 
    159.                procuraAjudante( no.noEsquerdo , x ); 
    160.           } 
    161. else
    162.           { 
    163.                procuraAjudante(no.noDireito , x ); 
    164.           } 
    165.       } 
    Anúncios
     
    Deixe um comentário

    Publicado por em 01/12/2009 em Estudos Java

     

    Deixe um comentário

    Preencha os seus dados abaixo ou clique em um ícone para log in:

    Logotipo do WordPress.com

    Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

    Imagem do Twitter

    Você está comentando utilizando sua conta Twitter. Sair / Alterar )

    Foto do Facebook

    Você está comentando utilizando sua conta Facebook. Sair / Alterar )

    Foto do Google+

    Você está comentando utilizando sua conta Google+. Sair / Alterar )

    Conectando a %s

     
    %d blogueiros gostam disto: