// CREACION E IMPRESION DE UN ARBOL BINARIO
#include <stdio.h>
#include <stdlib.h>
struct nodo
{
int numero;
struct nodo *raiz, *izq, *der;
};
struct nodo *Arbol = NULL;
struct nodo *CreaNodo(int x)
{
struct nodo *new = (struct nodo *)malloc(sizeof(struct nodo));
new->raiz = new->izq = new->der = NULL;
new->numero = x;
return new;
}
void Guardar(struct nodo *Tree, struct nodo *new)
{
if ( !Arbol ) Arbol = new;
else
{
if ( new->numero > Tree->numero )
{
if ( Tree->der )// hay algo a la der
{
Tree = Tree->der;
Guardar(Tree, new);
}
else
{
Tree->der = new;
new->raiz = Tree;
}
}
else
{
if ( Tree->izq )
{
Tree = Tree->izq;
Guardar(Tree, new);
}
else
{
Tree->izq = new;
new->raiz = Tree;
}
}
}
}
void print_InOrden(struct nodo *Tree)
{
if ( Tree->izq ) print_InOrden(Tree->izq);
printf("%d\t", Tree->numero);
if ( Tree->der ) print_InOrden(Tree->der);
}
void inicio(void)
{
int n=0, numeros[] = {15, 18, 7, 3, 4, 19, 2,
16, 0, 12, 11, 31, 17, 22};
struct nodo *new;
while(n<14)
{
new = CreaNodo(numeros[n]);
Guardar(Arbol, new);
n++;
}
print_InOrden(Arbol); printf("\n");
}
int main (int n, char **a) { inicio(); }
/*
PRE-ORDEN + 3 4 = 7
IN-ORDEN (entre-orden) 3 + 4 = 7
POST-ORDEN 3 4 + = 7
*/