Árvore.h
//Árvore Binária
#ifndef ARVORE_H_
#define ARVORE_H_
#include <stdio.h>
#include <stdlib.h>
typedef struct arvore TArv;
struct arvore{
char dado;
TArv* esq;
TArv* dir;
};
TArv* arv_criavazia(){
return NULL;
}
int arv_vazia(TArv *arv){
return !arv;
}
TArv* arv_cria(char ch, TArv *esq, TArv *dir){
TArv *aux;
aux = (TArv*)malloc(sizeof(TArv));
aux->dado = ch;
aux->esq = esq;
aux->dir = dir;
return aux;
}
void imprime(TArv* arv){
if(!arv_vazia(arv)){
printf("(%c",arv->dado);
imprime(arv->esq);
imprime(arv->dir);
printf(")");
}
}
TArv* inserir(TArv* raiz, char ch) {
if (!raiz) {
raiz = arv_cria(ch,arv_criavazia(),arv_criavazia());
} else {
if (ch < raiz->dado)
raiz->esq = inserir(raiz->esq,ch);
else
raiz->dir = inserir(raiz->dir,ch);
}
return raiz;
}
#endif /* ARVORE_H_ */
Árvore.c
#include "arvore.h"
int main(void) {
TArv *t;
t=arv_criavazia();
/*t=arv_cria('h',
arv_cria('f',
arv_cria('c', arv_criavazia(), arv_criavazia()),
arv_cria('g', arv_criavazia(), arv_criavazia())),
arv_cria('p',
arv_cria('k', arv_criavazia(), arv_criavazia()),
arv_cria('s', arv_criavazia(),arv_criavazia()))
);*/
t = inserir(t,'h');
t = inserir(t,'p');
t = inserir(t,'f');
t = inserir(t,'g');
t = inserir(t,'k');
t = inserir(t,'c');
t = inserir(t,'s');
//printf("%c\n", t->dir->esq->dado);
imprime(t);
printf("\nvazia --> %d\n", arv_vazia(t));
return EXIT_SUCCESS;
}