Redes Neurais
Por: Anderson Oliveira • 1/6/2015 • Trabalho acadêmico • 1.254 Palavras (6 Páginas) • 416 Visualizações
#include <stdio.h>
#include <stdlib.h>
#include "arvore.h"
#include "AVL.h"
arvore * criaArvore()
{
arvore *sentinela;
sentinela = (arvore*)calloc(1,sizeof(arvore));
sentinela->raiz = -1000;
sentinela->esq = NULL;
sentinela->dir = NULL;
sentinela->pai = NULL;
return sentinela;
}
void insereNo(arvore *A, int num)
{
arvore *novoNo, *aux, *auxPai;
novoNo = (arvore*)calloc(1,sizeof(arvore));
novoNo->raiz = num;
novoNo->bal = 0;
novoNo->esq = novoNo->dir = novoNo->pai = NULL;
if (A->dir == NULL)
{
A->dir = novoNo;
novoNo->pai = A;
return;
}
aux = A->dir;
while (aux != NULL)
{
auxPai = aux;
if (num < aux->raiz)
aux = aux->esq;
else
aux = aux->dir;
}
if (num < auxPai->raiz)
auxPai->esq = novoNo;
else
auxPai->dir = novoNo;
novoNo->pai = auxPai;
}
void percorreOrdem (arvore *A)
{
if (A == NULL)
return;
percorreOrdem(A->esq);
printf(" %d ", A->raiz);
percorreOrdem(A->dir);
}
arvore *busca(arvore *A,int num){
arvore *aux;
if(!A->dir)
return NULL;
aux = A->dir;
if(aux->raiz < num)
aux = busca(aux->esq,num);
else
if(aux->raiz > num)
aux = busca(aux->dir,num);
else
return aux;
}
int grau(arvore *A,int num){
arvore *aux = busca(A,num);
if(!aux)
return;
if(!aux->esq && !aux->dir)
return 0;
else
if(aux->esq && aux->dir)
return 2;
else
return 1;
}
arvore *predecessor(arvore *A){
arvore *aux = A->esq;
while(aux->esq)
aux = aux->dir;
return aux;
}
...