Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/09/2009, 12:20
Avatar de Anubis_Slash
Anubis_Slash
 
Fecha de Ingreso: mayo-2009
Ubicación: aqui y haya
Mensajes: 173
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: Recorridos en un arbol binario en c++

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.....
__________________
Bienvenidos los karmas.
Quejas, sugerencias o dudas, se awantan......

Última edición por Anubis_Slash; 28/09/2009 a las 12:32