Árvore binária - Pré-ordem
Publicado por Leonardo Barrozo dos Santos 11/03/2003
[ Hits: 28.124 ]
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); } }
Calculadora simples de dois valores, soma, subtrai, multiplica e divide
Método eficiente de armazenamento utilizando containers (Vector e Map)
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
Jogando com Proton no LInux (0)
Ingress NGINX Controller CVSS base score of 9.8 (4)
Impossível corrigir problemas, você manteve (hold) pacotes quebrados. (2)