pessoal, estou com problemas com ponteiros, na verdade são mais dúvidas de como usá-los =)
ele imprime a préOrdem com problemas:
[code]#include “stdio.h”
//Estrutura da árvore
typedef struct no {
int valor;
struct no *pdir;
struct no *pesq;
} Arvore;
void Inserir(struct no *pRaiz){
//Ler valor do elemento a esquerda, caso seja 0, este nao terá filhos.
int valor;
printf(“Digite o valor do Filho do Elemento %i a Esquerda”,pRaiz->valor);
scanf("%i",&valor);
if(valor != 0){
Arvore filho = (Arvore) malloc(sizeof(Arvore));
filho->valor = valor;
pRaiz->pesq = filho;
Inserir(filho);
}
//Ler valor do elemento a direita, caso seja 0, este nao terá filhos.
printf(“Digite o valor do Filho do Elemento %i a Direita”,pRaiz->valor);
scanf("%i",&valor);
if(valor != 0){
Arvore filho = (Arvore) malloc(sizeof(Arvore));
filho->valor = valor;
pRaiz->pdir = filho;
Inserir(filho);
}
}
void PreOrdem(struct no *pRaiz){
printf("%i",pRaiz->valor);
if(pRaiz->pesq != 0);
PreOrdem(pRaiz->pesq);
if(pRaiz->pdir != 0);
PreOrdem(pRaiz->pdir);
}
main(){
int valor;
Arvore *Raiz = (Arvore*) malloc(sizeof(Arvore));
printf("digite o valor da raiz");
scanf("%i",&valor);
Raiz->valor = valor;
Inserir(Raiz);
printf("%i",Raiz->pesq->pesq);
PreOrdem(Raiz);
system("pause");
}[/code]
Acredito que o problema esta nos parametros das funções, nas chamadas das funções, ou nos ponteiros
Obrigado
Tio, você não comete esse erro em Java, por que é que está cometendo esse erro em C? Acho que é porque está chegando a hora de você entrar de férias 
if(pRaiz->pesq != 0);
PreOrdem(pRaiz->pesq);
if(pRaiz->pdir != 0);
PreOrdem(pRaiz->pdir);
Veja que você pôs um “;” imediatamente depois do if.
putzzzzzzzzzzzzzzz
que vergonha iHUSAUIhsauiHSA
reinicializei os ponteiros com NULL, tire os " ;;"" e funcionou…valeu
[code]#include “stdio.h”
#include “stdlib.h”
//Estrutura da árvore
typedef struct no {
int valor;
struct no *pdir;
struct no *pesq;
} Arvore;
void Inserir(struct no *pRaiz){
//Ler valor do elemento a esquerda, caso seja 0, este nao terá filhos.
int valor;
printf(“Digite o valor do Filho do Elemento %i a Esquerda”,pRaiz->valor);
scanf("%i",&valor);
if(valor != 0){
Arvore filho = (Arvore) malloc(sizeof(Arvore));
filho->valor = valor;
filho->pesq = NULL;
filho->pdir = NULL;
pRaiz->pesq = filho;
Inserir(filho);
}
//Ler valor do elemento a direita, caso seja 0, este nao terá filhos.
printf(“Digite o valor do Filho do Elemento %i a Direita”,pRaiz->valor);
scanf("%i",&valor);
if(valor != 0){
Arvore filho = (Arvore) malloc(sizeof(Arvore));
filho->valor = valor;
filho->pesq = NULL;
filho->pdir = NULL;
pRaiz->pdir = filho;
Inserir(filho);
}
}
int PreOrdem(struct no *pRaiz){
printf("\n%i",(int) pRaiz->valor);
if(pRaiz->pesq != NULL)
PreOrdem(pRaiz->pesq);
if(pRaiz->pdir != NULL)
PreOrdem(pRaiz->pdir);
return 0;
}
main(){
int valor;
Arvore *Raiz = (Arvore*) malloc(sizeof(Arvore));
printf("digite o valor da raiz");
scanf("%i",&valor);
Raiz->valor = valor;
Raiz->pesq = NULL;
Raiz->pdir = NULL;
Inserir(Raiz);
PreOrdem(Raiz);
system("pause");
}[/code]
deixa eu te perguntar uma coisa, a lógica que eu to usando pra Arvore é essa mesma ?