Pense a respeito!
O estudo deste OVA permitiu compreender sobre essa estrutura de dados: a árvore binária. Agora é só aplicar
esse conhecimento em sua prática!
Referências
SCHILDT, Herbert. C completo e total.
3. ed., rev., atualiz. São Paulo: Makron Books, 1996. 827 p.
TENENBAUM, Aaron M.; LANGSAM, Yedidyah;
AUGENSTEIN, Moshe J. Estruturas de dados usando C.
São Paulo: Pearson Education, 1995. 825 p. ISBN 85-346-0348-0.
node * busca(node * no, int valor){"{"}
node * aux = no;
if (aux->valor == valor)
return
aux;
if (valor < aux->valor)
return busca(no->esquerda, valor);
if (valor >
aux->valor)
return busca(no->direita, valor);
return NULL;
}
Pessoa* busca(node * no, int cpf){"{"}
node * aux = no;
if (aux->pessoa.cpf == cpf)
return
aux->pessoa;
if (valor < aux->pessoa.cpf)
return busca(no->esquerda, cpf);
if
(valor > aux->valor)
return busca(no->direita, cpf);
return NULL;
}
Logo, na busca não precisamos ir para os dois lados à procura de um valor. Se a inserção foi implementada de
modo correto, sabemos para que lado devemos ir apenas comparando o valor desejado com o valor do nó atual.
Veja
o código a seguir:
Logicamente que em um exemplo real não teremos árvores de número e pesquisamos números, salvo quando queremos
saber se um dado está na árvore ou não. Porém, de modo geral, considere esse exemplo:
Não podemos inserir com base no identificador e remover com base no CPF, ou ainda, buscar com base no RG. Por
sinal, RG não seria um número ideal para isso, pois ele não é único no território nacional (pelo menos ainda
não).
Ao encontrar um elemento com o ID ou CPF desejado, eu retorno esse elemento do tipo Pessoa.
Veja o código para entender como seria:
Caso o CPF seja igual ao pesquisado, retorna o elemento Pessoa dentro do nó. Caso não, continuamos chamando
as funções de modo recursivo. É possível implementar as operações da Árvore de Busca de modo iterativo,
utilizando loops.
Temos um registro com vários atributos como uma pessoa, e buscamos com um identificador ou um CPF. Basta que o
campo a ser pesquisado seja ordenável e utilizado para inserção, remoção e busca.
Nó comvalor maiorfica à direita
Nó comvalor menorfica à esquerda
Vamos analisar como funcionam as operações de busca dentro da árvore binária. Já sabemos o funcionamento da
árvore binária, que é:
Operação de Busca na Árvore