estudante
#include
struct arvore
{
int dado; struct arvore* direita; struct arvore* esquerda;
};
typedef struct arvore t_arvore;
///prototipos de funcoes t_arvore* criaNoh(int valor); t_arvore* criaArvore(); int verificaArvoreVazia(t_arvore* arvore); void insereNohArvore(t_arvore** arvore, t_arvore* noh); void listaPreOrdem(t_arvore* arvore); void listaEmOrdem(t_arvore* arvore); void listaPosOrdem(t_arvore* arvore); t_arvore* localizaNoh(t_arvore* arvore, int chave); int calcularAltura(t_arvore* arvore); int menu();
int main()
{
t_arvore *nohRaiz = criaArvore(); int dado;
while(1)
{
switch(menu()) { case 1: printf("Dado...:"); scanf("%d", &dado); insereNohArvore(&nohRaiz, criaNoh(dado)); break;
case 2: listaEmOrdem(nohRaiz); break; case 3: listaPreOrdem(nohRaiz); break; case 4: listaPosOrdem(nohRaiz); break; case 5: printf("Valor a localicar:"); scanf("%d", &dado); if(localizaNoh(nohRaiz, dado)) printf("Valor encontrado\n"); else printf("Valor nao encontrado\n"); break; case 0: exit(0); }
}
return 0;
}
t_arvore* criaNoh(int valor) { t_arvore* noh = (t_arvore*)malloc(sizeof(t_arvore)); noh->dado = valor; noh->direita = NULL; noh->esquerda = NULL; return noh; }
t_arvore* criaArvore()
{
return NULL;
}
int verificaArvoreVazia(t_arvore* arvore)
{
if(!arvore) return 1; ///vazia
return 0; ///nao vazia
}
void insereNohArvore(t_arvore** arvore, t_arvore* noh)
{
if(*arvore == NULL) (*arvore) = noh;
if(noh->dado > (*arvore)->dado) insereNohArvore(&(*arvore)->direita, noh);
else if(noh -> dado < (*arvore)->dado) insereNohArvore(&(*arvore)->esquerda, noh);
}
void