Árvore Binária de Busca

0 respostas
Joao_Batista

Olá galera!

Eu tenho que fazer umas inserções em uma árvore binária de busca [método insert()]. Depois, faço uma busca [método search()]. Problema o método search() não encontra certos elementos quando o método insert() é implementado de forma iterativa. Quando este é implementado de forma recursiva o método search() é capaz de achar qualquer elemento. Conclusão: o problema está no insert(). :cry: Mas onde?!? Alguém poderia me ajudar? Obrigado! :slight_smile:

/*
 *Estou levando em conta o código de hash pra comparar as strings.
 *Isso mesmo, estou inserindo strings!!  :D
 */

public void insert()
{
    TreeNode q, p; //o que vai na frente e o que fica pra guardar a posição
    q = p = this.getRoot();
		
    if(this.getRoot() == null) //se árvore vazia
    {
        this.setRoot(data); //insere na raiz
    }
    else //senão
    {
        //enquanto não topar com nada igual nem com nada vazio
        while((data.toString().hashCode() != q.getData().toString().hashCode()) && (p != null))
        {
            q = p;

            //se o que se quer pôr é menor que o que tá lá
            if(data.toString().hashCode() &lt p.getData().toString().hashCode())
            {
                p = q.getLeft(); //p vai pra esquerda
            }
            else
            {
                p = q.getRight(); //p vai pra direita
            }
        } //fim while

        //tá aqui então é porque achou o lugar pra colocar
        //se for menor
        if(data.toString().hashCode() &lt q.getData().toString().hashCode())
        {
            //põe na esquerda
            q.setLeft(new TreeNode(data));
        }
        else //senão
        {
            //põe na direita
            q.setRight(new TreeNode(data));
        }
    } //fim else maior
} //fim insert
Criado 18 de fevereiro de 2007
Respostas 0
Participantes 1