Árvore binária - Pré-ordem
Publicado por Leonardo Barrozo dos Santos 11/03/2003
[ Hits: 28.126 ]
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); } }
Algoritmo para detecção do sistema operacional em C
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Preciso atualizar o Vim [RESOLVIDO] (8)
QUERO REVIVER UM COMPUTADOR ANTIGO, MAS TIVE PROBLEMAS COM OS LINUX QU... (9)
meu linux congela [RESOLVIDO] (4)