Arvore binaria de busca - codigo em c
#include
#include
#include "ArvoreBinaria.h"
struct arvBinariaDeBusca
{
float info; struct arvBinariaDeBusca* esq; struct arvBinariaDeBusca* dir;
};
ABB* criar(float conteudo){ ABB * arv = (ABB*)malloc(sizeof(ABB)); arv->info = conteudo; arv->esq = NULL; arv->dir = NULL; return arv; }
ABB* inserir(ABB* arv, float conteudo){ if(arv!=NULL){ // testa se a árvore já existe if(conteudo < infoRaiz(arv)){ //se o conteudo é menor que o da raiz atual, inserção à esquerda if(arv->esq==NULL){ //verifica se à esquerda existe folha arv->esq = criar(conteudo); return arv; } else inserir(arv->esq, conteudo);//em existindo folha, chama recursivamente à esquerda } else if (conteudo > infoRaiz(arv)){ //se o conteúdo é maior que o da raiz atual, inserção à direita if(arv->dir==NULL){ //verifica se à direita existe folha arv->dir = criar(conteudo); return arv; } else inserir(arv->dir, conteudo);//em existindo folha, chama recursivamente à direita } } else{ return NULL; //retorna NULL caso a árvore não exista } }
int contem(ABB* arv, float conteudo){ if(arv==NULL) return CHAVE_NAO_ENCONTRADA; if(arv!=NULL){ if(conteudo < infoRaiz(arv)) contem(arv->esq, conteudo); else if(conteudo > infoRaiz(arv)) contem(arv->dir, conteudo); else if(infoRaiz(arv)==conteudo) return SUCESSO; } }
float infoRaiz(ABB*