Metodo para fazer busca em arvore binaria!

2 respostas
IFMT
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package arvorebin;

/**
 *
 * @author Joabe
 */
// definição da classe TreeNode
class TreeNode
{
   // membros de acesso de pacote
   TreeNode leftNode; // nó esquerdo
   int data; // valor do nó
   TreeNode rightNode; // nó direito

   // construtor inicializa os dados e os torna um nó-folha
   public TreeNode( int nodeData )
   {
      data = nodeData;
      leftNode = rightNode = null; // o nó não tem nenhum filho
   } // fim construtor sem argumento TreeNode

   // localiza ponto de inserção e insere novo nó; ignora os valores duplicados
   public void insert( int insertValue )
   {
      // insere na subárvore esquerda
      if ( insertValue < data )
      {
         // insere novo TreeNode
         if ( leftNode == null )
            leftNode = new TreeNode( insertValue );
         else // continua percorrendo subárvore esquerda
            leftNode.insert( insertValue );
      } // fim do if
      else if ( insertValue > data ) // insere na subárvore direita
      {
         // insere novo TreeNode
         if ( rightNode == null )
            rightNode = new TreeNode( insertValue );
         else // continua percorrendo subárvore direita
            rightNode.insert( insertValue );
      } // fim de else if
   } // fim do método insert
} // fim da classe TreeNode

// definição da classe Tree
  class Tree
{
   private TreeNode root;

   // construtor inicializa uma Tree de inteiros vazia
   public Tree()
   {
      root = null;
   } // fim construtor sem argumento Tree

   // insere um novo nó na árvore de pesquisa binária
   public void insertNode( int insertValue )
   {
      if ( root == null )
         root = new TreeNode( insertValue ); // cria o nó raiz aqui
      else
         root.insert( insertValue ); // chama o método insert
   } // fim do método insertNode

   // inicia percurso na pré-ordem
   public void preorderTraversal()
   {
      preorderHelper( root );
   } // fim do método preorderTraversal

   // método recursivo para realizar percurso na pré-ordem
   private void preorderHelper( TreeNode node )
   {
      if ( node == null )
         return;

      System.out.printf( "%d ", node.data ); // gera saída de dados do nó
      preorderHelper( node.leftNode );       // percorre subárvore esquerda
      preorderHelper( node.rightNode );      // percorre subárvore direita
   } // fim do método preorderHelper

   // inicia percurso na ordem
   public void inorderTraversal()
   {
      inorderHelper( root );
   } // fim do método inorderTraversal

   // método recursivo para realizar percurso na ordem
   private void inorderHelper( TreeNode node )
   {
      if ( node == null )
         return;

      inorderHelper( node.leftNode );        // percorre subárvore esquerda
      System.out.printf( "%d ", node.data ); // gera saída de dados do nó
      inorderHelper( node.rightNode );       // percorre subárvore direita
   } // fim do método inorderHelper

   // inicia percurso na pós-ordem
   public void postorderTraversal()
   {
      postorderHelper( root );
   } // fim do método postorderTraversal

   // método recursivo para realizar percurso na pós-ordem
   private void postorderHelper( TreeNode node )
   {
      if ( node == null )
         return;

      postorderHelper( node.leftNode );      // percorre subárvore esquerda
      postorderHelper( node.rightNode );     // percorre subárvore direita
      System.out.printf( "%d ", node.data ); // gera saída de dados do nó
   } // fim do método postorderHelper
} // fim da classe Tree
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package arvorebin;

import java.util.Random;

/**
 *
 * @author Joabe
 */
public class TreeTest
{
   public static void main( String args[] )
   {
      Tree tree = new Tree();
      int value;
      Random randomNumber = new Random();

      System.out.println( "Inserting the following values: " );

      // insere 10 inteiros aleatórios de 0-99 na árvore
      for ( int i = 1; i <= 10; i++ )
      {
         value = randomNumber.nextInt( 100 );
         System.out.print( value + " " );
         tree.insertNode( value );
      } // fim do for

      System.out.println ( "\n\nPreorder traversal" );
      tree.preorderTraversal(); // realiza percurso na pré-ordem da árvore

      System.out.println ( "\n\nInorder traversal" );
      tree.inorderTraversal(); // realiza percurso na ordem da árvore

      System.out.println ( "\n\nPostorder traversal" );
      tree.postorderTraversal(); // realiza percurso na pós-ordem da árvore
      System.out.println();
   } // fim de main
} // fim da classe TreeTest

2 Respostas

pedroroxd

Você está compartilhando com agente?
Se sim, legal.

Se não, isso é uma dúvida? tem algum erro? O que não consegue fazer?
Seja mais claro e objetivo…

IFMT

Eu preciso d eum metodo pra fazer uma busca na arovore binaria acima!!!

Criado 7 de maio de 2010
Ultima resposta 7 de mai. de 2010
Respostas 2
Participantes 2