hola compañero aqui te dejo el codigo ya modificado a lo que necesitas
Código:
// nodo1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
//#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NULL 0
//
//Programa que carga los nodos de un �rbol binario en memoria.
struct treenodo {
struct treenodo *izqptr; //puntero al nodo izquierdo
char dato[40]; //dato del nodo
struct treenodo *derptr; // puntero al nodo derecho
};
void crear(treenodo *nodo){ //crea un �arbol binario
char resp[2];
printf("Entre el dato ");
gets (nodo->dato);
printf("Hay nodos a la Izquierda entre S/N ");
gets(resp);
if (strcmp(resp, "S")== 0) {
nodo->izqptr= new treenodo();
crear(nodo->izqptr); }
else
nodo->izqptr=NULL;
printf("Hay nodos a la Derecha entre S/N ");
gets(resp);
if (strcmp(resp, "S")== 0) {
nodo->derptr= new treenodo();
crear(nodo->derptr); }
else
nodo->derptr=NULL;
return;
}
//Recorrido en Pre-Orden
void preorden(treenodo *nodo){
if (nodo != NULL) {
printf("%s", (*nodo).dato);
preorden(nodo->izqptr);
preorden(nodo->derptr);
}
}
void main(int){
treenodo *nodo; // puntero al nodo
nodo= new treenodo();
crear(nodo);
preorden(nodo);
getch();
}
por cierto lo hice en vc++ 2008 por eso los archivos de cabecera comentados
basicamente lo que movi fue que la veriable resp necesitaba otro espacio debido a que el gets guarda el \0 y el siguiente error era que estabas inicializando mal debe ser asi: new treenodo(); y no asi: new (treenodo);
saludos
Anubis_Slash
EDITO: como nota te recomiendo que validez la S en minuscula ( s ) y la N en minuscula tambien para que pueda acceder al apartado que deseas, asi como al momento de imprimir los datos hacerlo con saltos de linea.....