// 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 */