Linguagem C - Árvores Binárias
Neste artigo, falarei sobre o que é e como implementar uma estrutura de dados chamada Árvore Binária. Com tempos de pesquisa, inserção e remoção expressivamente melhores que de listas encadeadas, esta estrutura é usada principalmente em bancos de dados e sistemas de arquivos.
[ Hits: 53.120 ]
Por: Enzo de Brito Ferber em 07/05/2015 | Blog: http://www.maximasonorizacao.com.br
/* fat.c * * Linguagem C - Árvores Binárias * Viva O Linux * * Enzo Ferber */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> double fat (double n) { if (n == 1) return 1; return n * fat(n - 1); // return (n == 1) ? 1 : n * fat(n - 1); } int main (int argc, char *argv[]) { register int i; for (i = 1; i < argc; i++) printf("%s: %.0lf ", argv[i], fat( atof(argv[i]))); return 0; }
/* fib.c
 *
 * Linguagem C - Árvores Binárias
 * Viva O Linux
 *
 * Enzo Ferber
 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
double fib (double n)
{
	if (n == 0 || n == 1) return 1;
	return fib(n - 1) + fib(n - 2);
	// return (n == 0 || n == 1) ? 1 : fib(n - 1) + fib(n - 2);
}
int main (int argc, char *argv[])
{
	register int i;
	for (i = 1; i < argc; i++)
		printf("%s: %.0lf
", argv[i], fib(atof(argv[i])));
	return 0;
}
/* bbin.c
 *
 * Linguagem C - Árvores Binárias
 * Viva O Linux
 *
 * Enzo Ferber
 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int bbin (int *a, int min, int max, int info)
{
	int pos = (min + max) / 2;
	if (a[pos] == info) return pos;
	else if (min >= max) return -1;
	else if (info > a[pos]) return bbin(a, pos + 1, max, info);
	else return bbin(a, min, pos - 1, info);
	return -1;
}
int main (void)
{
	int a[10] = {1,2,3,4,5,6,7,8,9,10};
	printf("1: %d
", bbin(a, 0, 10, 1));
	printf("5: %d
", bbin(a, 0, 10, 5));
	printf("8: %d
", bbin(a, 0, 10, 8));
	printf("0: %d
", bbin(a, 0, 10, 0));
	printf("9: %d
", bbin(a, 0, 10, 9));
	return 0;
}
/* bbin2.c
 *
 * Linguagem C - Árvores Binárias
 * Viva O Linux
 *
 * Enzo Ferber : enzoferber@gmail.com
 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#define LIMIT		50000
int counter;
int bbin (int *a, int min, int max, int info)
{
	int pos = (min + max) / 2;
	counter++;
	if (a[pos] == info) return pos;
	else if (min >= max) return -1;
	else if (info > a[pos]) return bbin(a, pos + 1, max, info);
	else return bbin(a, min, pos - 1, info);
	return -1;
}
int main (void)
{
	int a[ LIMIT ];
	register int i;
	int n;
	for (i = 0; i < LIMIT; i++)
		a[i] = i + 1;
	printf("Digite -1 para sair
");
	while (1) {
		printf("Digite um número: ");
		scanf("%d", &n);
		if (n == -1) break;
		// contador
		counter = 0;
		printf("Posicao no vetor: %d
", bbin(a, 0, LIMIT, n));
		printf("Operacoes necessarias: %d
", counter);
	}
	return 0;
}
Linguagem C - Listas Duplamente Encadeadas
Linguagem C - Funções Variádicas
Análise dos Métodos de Ordenação usados em Algoritmos Computacionais
Dicas para aprender programação
Linguagem C - Listas Duplamente Encadeadas
IA Turbina o Desktop Linux enquanto distros renovam forças
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
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?









