Implementar em C uma árvore binária de pesquisa que armazena valores
do tipo inteiro. O programa deve oferecer as seguintes opções para o
usuário:
1) Inserir um elemento (informado pelo usuário);
2) Buscar um elemento (é fornecida uma chave e a função informa se
encontrou ou não o elemento);
3) Imprimir o conteúdo da árvore (ao selecionar essa opção devem ser
mostrados na tela os dados com o caminhamento pré-fixado a
esquerda);
4) Imprimir o nível da árvore;
5) Liberar a árvore da memória e encerrar.
Meu código é este, porém tenho dúvidas em como fazer o item 4 e 5.
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include "arvore.h"
struct arvore {
struct _arvore *esq;
int valor;
struct arvore *dir;
};
typedef struct arvore a;
a *raiz = NULL;
void Inserir(int x){
a *novo = NULL;
a *aux = NULL, *auxOld = NULL;
novo = malloc (sizeof(a));
novo -> valor = x;
novo -> esq = NULL;
novo -> dir = NULL;
if (raiz == NULL){
raiz = novo;
}
else {
aux = raiz;
while (aux != NULL){
auxOld = aux;
if (x < aux -> valor){
aux = aux -> esq;
}
else {
aux = aux -> dir;
}
if (x < auxOld -> valor){
auxOld -> esq = novo;
}
else {
auxOld -> dir = novo;
}
}
}
}
void Buscar(int x){
setlocale (LC_ALL, "");
a *aux = NULL;
aux = raiz;
while (aux != NULL) {
if (x == aux -> valor) {
printf("Elemento encontrado.\n");
return;
}
else if (x < aux -> valor){
aux = aux -> esq;
}
else {
aux = aux -> dir;
}
if (aux == NULL){
printf("Elemento não encontrado.\n");
}
}
}
void PrefixEsq(a *aux){
if (aux == NULL){
return;
}
printf("%d ", aux -> valor);
PrefixEsq(aux -> esq);
PrefixEsq(aux -> dir);
}
void PrefixDir(a *aux) {
if (aux == NULL)
return;
printf("%d ", aux -> valor);
PrefixDir(aux -> dir);
PrefixDir(aux -> esq);
}
void ImprimirPreEsq(){
PrefixEsq(raiz);
printf("\n");
}
Pergunta
eduarda_dasilveira
Implementar em C uma árvore binária de pesquisa que armazena valores
do tipo inteiro. O programa deve oferecer as seguintes opções para o
usuário:
1) Inserir um elemento (informado pelo usuário);
2) Buscar um elemento (é fornecida uma chave e a função informa se
encontrou ou não o elemento);
3) Imprimir o conteúdo da árvore (ao selecionar essa opção devem ser
mostrados na tela os dados com o caminhamento pré-fixado a
esquerda);
4) Imprimir o nível da árvore;
5) Liberar a árvore da memória e encerrar.
Meu código é este, porém tenho dúvidas em como fazer o item 4 e 5.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.