Ola eu estou com o seguinte problema naum esta dando certo minha busca na arvore abaixo!!!
public TreeNode buscaBin(TreeNode r, long valor) //metodo que faz busca na arvore binaria
{
if(r == null)
return null;
if(valor == r.getDado())
return r;
if(valor < r.getDado())
return(buscaBin(r.getEsq(),valor));
else
return(buscaBin(r.getDir(),valor));
}
[code]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;
private int cont;
// construtor inicializa uma Tree de inteiros vazia
public Tree()
{
root = null;
cont=0;
} // 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 );
System.out.println(" A quantidade de nós: "+cont);
} // 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
cont++;
} // 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
public TreeNode buscaBin(TreeNode r, long valor) //metodo que faz busca na arvore binaria
{
if(r == null)
return null;
if(valor == r.getDado())
return r;
if(valor < r.getDado())
return(buscaBin(r.getEsq(),valor));
else
return(buscaBin(r.getDir(),valor));
}
} // fim da classe Tree
[/code]