Ir para conteúdo
Fórum Script Brasil

eduarda_dasilveira

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Posts postados por eduarda_dasilveira

  1. 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");
    }

     

×
×
  • Criar Novo...