Árvore binária - Pré-ordem
Publicado por Leonardo Barrozo dos Santos 11/03/2003
[ Hits: 28.045 ]
Este é o programa fonte de um programa de árvore binária com exibição em pré-ordem.
/* +-----------------------------------------------------------+ | Programador: Leonardo Barrozo dos Santos | | Descrição..: Programa que demonstra o funcionamente de | | ...........: uma árvore binária com exibição em pré-ordem.| | Arquivo....: arvbinpreord.c | +-----------------------------------------------------------+ */ #include <stdio.h> #include <stdlib.h> #define MALLOC(x) ((x *) malloc (sizeof(x))) #define TRUE 1 struct arv_bin{ char info; struct arv_bin *esquerda; struct arv_bin *direita; }; typedef struct arv_bin bin_t; void preordem(bin_t *); void incluir (void); void exibir_pre (void); bin_t *raiz; bin_t *arvore(bin_t *, bin_t *, char); int main (void) { int op; raiz=NULL; for (;;) { system ("clear"); printf ("\nMenu"); printf ("\n\n 1. Insere"); printf ("\n 2. Exibe"); printf ("\n 3. Sair"); printf ("\n\n Entre a sua opção: "); scanf ("%d",&op); fflush(stdin); switch (op) { case 1 : incluir(); break; case 2 : exibir_pre(); break; case 3 : exit(0); default: printf ("\nOpção errada"); break; } } } void incluir (void) { char s[80]; while(TRUE) { printf("\nLETRA: "); scanf("%s",&s); if (!raiz) { raiz = arvore(raiz,raiz, *s); } else { arvore(raiz,raiz,*s); } printf("\n Continua: (s,n) "); scanf("%s",&s); if(*s!='s') break; }; } bin_t *arvore (bin_t *ra, bin_t *r, char info) { if(!r){ r = MALLOC(bin_t); if (!r) { printf("Sem memória"); exit(0); } r->esquerda = NULL; r->direita = NULL; r->info=info; if(!ra) { printf("\nEssa letra é a raiz"); return r; } if(info < ra->info) { ra->esquerda=r; printf("\nEssa letra entrou a esqueda de %c",ra->info); } else { ra->direita = r; printf("\nEssa letra entrou a direita %c",ra->info); } return r; } if(info < ra->info) arvore(r,r->esquerda,info); else arvore(r,r->direita,info); } void exibir_pre (void) { char b[80]; preordem(raiz); printf("\n qualquer tecla sai"); scanf("%s",&b); } void preordem (bin_t *leo) { if (leo!=NULL) { printf("%c",leo->info); preordem(leo->esquerda); preordem(leo->direita); } }
Passando uma matriz para funcao
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
SysAdmin ou DevOps: Qual curso inicial pra essa área? (0)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta