Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Zedd

Busca árvore binária

Recommended Posts

Olá pessoal é o seguinte :

 

Estou tentando fazer uma função que retorne 1(indicando que existe) caso encontre em algum nó um elemento que o usuário queira e 0 caso não encontre.

 

Consegui fazer com que a função retorne verdadeiro para indicar que o elemento existe,porém quando o usuário digita um elemento que não existe eu não consegui prosseguir.

 

No processo recursivo da árvore binária quando ela termina de verificar todos os nós tem algum valor específico que ela retorna ou momento específico (linha de código que identifique o fim da busca de todos os elementos) ?

 

 

Segue a minha função apenas verificando se existe (e como eu disse verifica tranquilo),se alguém puder me ajudar ficaria muito grato :

 

int buscaE(arvore *raiz,int n) {

     if(raiz->info == n) return 1;

     return(buscaE(raiz->esq,n));
     return (buscaE(raiz->dir,n));



}

Compartilhar este post


Link para o post
Compartilhar em outros sites

A última linha da função nunca é executada.

 

Você precisa se aproveitar da invariante de que, em uma árvore binária de busca, todos os filhos de um lado de um nó têm chaves menor que a dele, e todos os filhos do outro lado têm chave maior que a dele. Geralmente, os filhos à esquerda são menores e os à direita, maiores. Se houver elementos com chaves repetidas, é necessário estabelecer alguma constante sobre a posição de elementos cujas chaves forem iguais ao de uma raiz.

 

A busca é simples:

 

função buscar(raíz, chave) 
{
   se (raíz.chave == chave)
       retornar raíz.valor

   se (raíz.chave < chave e raíz.esquerda existe)
       retornar buscar(raíz.esquerda, chave)

   se (raíz.chave > chave e raíz.direita existe)
       returnar buscar(raíz.direita, chave)

   retornar falso
}

 

Tente escrever isto em C.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.