Árvore binária - Pré-ordem
Publicado por Leonardo Barrozo dos Santos 11/03/2003
[ Hits: 28.266 ]
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);
}
}
Métodos de Ordenação - Quick Sort
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
O programa assinador digital (0)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)
Instalação não está resolvendo as dependencias (2)
Captação de áudio no zorin linux começa a diminuir com o tempo (5)









