implementar Arvores Binarias em C
//arquivo arvoreBinaria.h typedef struct NO* ArvBin;//define ponteiro arvore binario
#include <stdio.h>
#include <stdlib.h>
#include "arvoreBinaria.h"
//---------------------------------------------------------------------------------------------------------------------------------------------
//PERCORRER UMA ARVORE
//3 modos:
//Pré-Ordem : visita a raiz , o filho da esquerda e o filho da direita
//arquivo arvoreBinaria.h int preOrdem_ArvBin(ArvBin *raiz);
//arquivo arvoreBinaria.c int preOrdem_ArvBin(ArvBin *raiz){
if(raiz == NULL)//se foi criado com sucesso a raiz return ;
if(*raiz != NULL){ printf("%d \n",(*raiz)->info);//imprime informação da raiz preOrdem_ArvBin(&((*raiz)->esq));//visita filho da esq preOrdem_ArvBin(&((*raiz)->dir));//visita filho da dir
}
}//fehca preOrdem_ArvBin
//---------------------------------
//em-ordem : visita o filho da esquerda , a raiz , eo filho da direita
//arquivo arvoreBinaria.h
int emOrdem_ArvBin(ArvBin *raiz);
//arquivo arvoreBinaria.c
int emOrdem_ArvBin(ArvBin *raiz){ if(raiz == NULL)//se foi criado com sucesso a raiz return ;
if(*raiz != NULL){ emOrdem_ArvBin(&((*raiz)->esq));//visita a esquerda printf("%d\n",(*raiz)->info);//imprime nó emOrdem_ArvBin(&((*raiz)->dir));//visita direita
}//fehca if
}//fecha emOrdem_ArvBin
//-----------------------------------------
//pós-ordem : visita o filho da esquerda , o filho da direita e a raiz....ex : contar nós da arvore ,altura da arvore e liberar arvore
//arquivo arvoreBinaria.h
int posOrdem_ArvBin(ArvBin *raiz);
//arquivo arvoreBinaria.c
int posOrdem_ArvBin(ArvBin *raiz){ if(raiz == NULL)//se foi criado com sucesso a raiz return ;
if(*raiz != NULL){ posOrdem_ArvBin(&((*raiz)->esq)); posOrdem_ArvBin(&((*raiz)->dir)); printf("%d\n",(*raiz)->info);