Ir ao conteúdo
  • Cadastre-se

Fábio RA1808328-5

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

0
  1. Pessoal, Boa Tarde!!! Preciso criar uma Árvore Binária que ordene me RA 1808328-5, conforme anunciado abaixo; "Considere que, ao realizar um teste no seu programa que implementa árvores binárias, você inseriu os números de seu RA (da esquerda para a direita) como se cada algarismo fosse um nó na árvore. Dessa forma, altere o código-fonte dado para que seu programa, durante a execução, monte uma árvore binária a partir dos dígitos de seu RA. O seu programa não deve realizar a inserção automaticamente ordenada, ou seja, não é preciso desenvolver um método que realize a inserção ordenadamente. Você mesmo pode construir a árvore (via inserções simples, seguindo as regras), de maneira a compor a árvore ordenada com os números de seu RA. Além disso, você precisará criar uma função que seja capaz de realizar o percurso em-ordem na árvore recém-criada, partindo da raiz e imprimindo na tela os nós visitados de acordo com esse método." Já tenho o código fonte, tenho que altera-lá para funcionar... Alguém consegue??? Preciso de uma ajuda urgente!!! ABAIXO O CODIGO FONTE; #include <stdio.h> #include <stdlib.h> #include <string.h> //Estrutura typedef struct str_no { char dado; int esquerda; int direita; int pai; } str_no; //Constantes #define tamanho 100 #define E 0 #define D 1 #define R -1 //Variáveis struct str_no arvore[tamanho]; int lado,indice=0; int opt=-1; char pai, no; //Protítipos das funções void arvore_insere(int pai, char dado, int lado); int arvore_procura(char dado); void menu_mostrar(void); //Procura nó int arvore_procura(char dado){ int i; if (indice != 0){ for (i = 0; i<indice; i++){ if (arvore.dado == dado) { return (i); } } } else { return (0); } } //Inserir nó void arvore_insere(int pai, char dado, int lado){ switch (lado){ case E: arvore[pai].esquerda = indice; arvore[indice].dado = dado; arvore[indice].pai = pai; arvore[indice].esquerda = -1; arvore[indice].direita = -1; indice++; break; case D: arvore[pai].direita = indice; arvore[indice].dado = dado; arvore[indice].pai = pai; arvore[indice].esquerda = -1; arvore[indice].direita = -1; indice++; break; case R: arvore[indice].dado = dado; arvore[indice].pai = -1; arvore[indice].esquerda = -1; arvore[indice].direita = -1; indice++; break; } } //Função principal int main(void){ int temp; do { menu_mostrar(); scanf("%d", &opt); fflush(stdin); switch (opt){ case 1: printf("\nDigite o valor do PAI: "); scanf("%c",&pai); fflush(stdin); //scanf("%c",&pai); printf("Digite o valor do NO: "); scanf("%c",&no); fflush(stdin); //scanf("%c",&no); printf("Digite o lado da subarvore (E=%d/D=%d/R=%d): ", E,D,R); scanf("%d",&lado); fflush(stdin); temp = arvore_procura(pai); arvore_insere(temp,no,lado); break; case 2: printf("Digite o valor do NO: "); scanf("%c",&no); fflush(stdin); //scanf("%c",&no); temp = arvore_procura(no); printf("No %c\nFilho Esquerda: %c \nFilho Direita: %c\n\n", arvore[temp].dado, arvore[arvore[temp].esquerda].dado, arvore[arvore[temp].direita].dado); system("pause"); break; } }while (opt!=0); system("pause"); return(0); } //Desenha o menu na tela void menu_mostrar(void){ int i; system("cls"); for (i = 0; i < indice; i++){ printf("| %c ",arvore.dado); } printf("\n1 - Inserir um NO na arvore"); printf("\n2 - Pesquisar um NO na arvore"); printf("\n0 - Sair...\n\n"); }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!