Oi pessoal,
preciso escrever um programa que, dada uma seqüência de números inteiros, insira-os em uma árvore binária. Após o final da entrada o estado da árvore quando se executa as três formas de caminhamento (preordem, inordem e pósordem). Ah... o programa tem que parar qdo for inserido o número -1.
Fiz algumas coisinhas já.. será que alguém pode me ajudar?
#include
#include
#include
typedef struct no * apont;
typedef struct no {
int valor;
apont esq,dir;
}TipoNo;
typedef struct {
apont raiz;
}TipoArvore;
void FAVazia(TipoArvore *arvore) {
(*arvore).raiz = NULL;
}
int Vazia(TipoArvore *arvore) {
if ((*arvore).raiz == NULL)
return(1);
else
return(0);
}
void Insere(apont dados, apont *pos) {
if ((*pos)==NULL) {
(*pos) = dados;
(*pos)->dir = NULL;
(*pos)->esq = NULL;
}
else {
if ((*pos)->valor>dados->valor)
Insere(dados,&(*pos)->esq);
else
Insere(dados,&(*pos)->dir);
}
}
void preOrdem(apont raiz) {
if (raiz!=NULL){
Visita(raiz); ???????? como é essa função pra visitar a raiz?????
preOrdem(raiz->esq);
preOrdem(raiz->dir);
}
}
void inOrdem(apont raiz) {
if (raiz!=NULL){
inOrdem(raiz->esq);
Visita(raiz);
inOrdem(raiz->dir);
}
}
void posOrdem(apont raiz) {
if (raiz!=NULL){
posOrdem(raiz->esq);
posOrdem(raiz->dir);
Visita(raiz);
}
}
int main() {
TipoArvore arvore;
apont tmp;
int opcao, valor;
FAVazia(&arvore);
scanf("%d",&opcao);
while(opcao!=-1) {
tmp = (apont)malloc(1*sizeof(TipoNo));
tmp->valor = opcao;
Insere(tmp,&arvore.raiz);
scanf("%d",opcao);
}
preOrdem(apont raiz);
printf
??????????????????????????
return 0;
}
tathy
Novo Membro
Registrado
5 Mensagens
0 Curtidas