#include <stdio.h>
#include <stdlib.h>

typedef struct Nodo {
			char info;
			struct Nodo *izq;
			struct Nodo *der;
		} Nodo;

Nodo *Crear(char in, Nodo *iz, Nodo *de)
{
	Nodo *t = (Nodo*) malloc( sizeof(Nodo) );
	t->info= in;
	t->izq = iz;
	t->der = de;
	return t;
}

void Destruir(Nodo *t)
{
	if (t!=NULL) {
		Destruir(t->der);
		Destruir(t->izq);
		free(t);
	}
}


Nodo *leer(void)
{
	char c;
	scanf("%c", &c);
	if (c=='.')
		return NULL;
	else {
		Nodo *i= leer();
		Nodo *d= leer();
		return Crear(c, i, d);
	}
}

void PreOrden(Nodo *t)
{
	if (t!=NULL) {
		printf("%c ", t->info);
		PreOrden(t->izq);
		PreOrden(t->der);
	}
}

void EnOrden(Nodo *t)
{
	if (t!=NULL) {
		EnOrden(t->izq);
		printf("%c ", t->info);
		EnOrden(t->der);
	}
}

void PostOrden(Nodo *t)
{
	if (t!=NULL) {
		PostOrden(t->izq);
		PostOrden(t->der);
		printf("%c ", t->info);
	}
}

int main(int argc, char* arg[])
{
	Nodo *t = leer();
	PreOrden(t);
	printf("\n");
	EnOrden(t);
	printf("\n");
	PostOrden(t);
	printf("\n");
	Destruir(t);
	return EXIT_SUCCESS;
}
