You are on page 1of 3

http://www.slideshare.net/piergiu/bst-on-array?utm_source=slideshow03&utm_medium =ssemail&utm_campaign=share_slideshow http://lonati.di.unimi.it/algo/0910/lab/T09.

pdf

http://antoniotancredi.altervista.org/2010/04/03/alberi-binari-di-ricerca/ http://www.alessioluffarelli.it/guide_tutorial/desktop/alberi_binari.php http://www.alessioluffarelli.it/guide_tutorial/desktop/alberi_binari.php

#include<stdio.h> #include<conio.h> #include<stdlib.h> struct arbol{ int info; struct arbol *left; struct arbol *right; }; typedef struct arbol nodetree; typedef nodetree *arbolptr; void insertar(arbolptr*L, int b); void imprimir(arbolptr L); void preorden(arbolptr L); void entreorden(arbolptr L); void posorden(arbolptr L); void instrucciones(); main() { arbolptr L=NULL; int inf, opcion; instrucciones(), (" \n Seleciona la opcion: \n"); scanf("%d",&opcion); while(opcion!=5){ switch(opcion) { case 1:{ printf("\n Introduzca el elemento:"); scanf("%d",&inf); insertar(&L,inf); imprimir(L); instrucciones(); break; } case 2: { printf("Pre-orden"); preorden(L); break; } case 3: { printf("Entre-orden"); entreorden(L); break;

} case 4: { printf("Pos-orden"); posorden(L); break; } case 5: { printf("Fin del programa"); break; } default: printf("Operacion invalida"); instrucciones(); break; } printf("\n SELECCIONA UNA OPCION: "); scanf("%d",&opcion); }// Fin del While printf("Fin del proyecto"); return 0; } void instrucciones() { printf("\n\n ************PROGRAMA DE ARBOL***************"); printf(" \n\n\t*****MENU PRINCIPAL********\n"); printf("\n 1- INTRODUZCA UN ELEMENTO AL ARBOL"); printf("\n 2- RECORRIDO EN PRE-ORDEN"); printf("\n 3- RECORRIDO EN ENTRE-ORDEN"); printf("\n 4- RECORRIDO EN POS-ORDEN"); printf("\n 5-SALIR\n"); } void insertar(arbolptr*r,int x) { arbolptr pnuevo,panterior,pactual; pnuevo=(arbol*)malloc(sizeof(arbol)); if(pnuevo!=NULL) { pnuevo->info=x; pnuevo->right=NULL; pnuevo->left=NULL; panterior=NULL; pactual=*r; printf("%d",pnuevo->info); while(pactual!=NULL && x>pactual->info) { panterior=pactual; pactual=pactual->left; } if(panterior==NULL) { pnuevo->left=*r; *r=pnuevo; } else { panterior->left=pnuevo; pnuevo->left=pactual; } } }

void imprimir(arbolptr pactual) { if(pactual==NULL) printf("\n La lista esta vacia\n"); else { printf("\n La cadena de elementos del Arbol es:\n"); while(pactual!=NULL) { printf("%d->",pactual->info); pactual=pactual->left; } printf("NULL\n\n"); } } void preorden(arbolptr pactual) { if(pactual!=NULL) { printf("%d",pactual->info); preorden(pactual->left); } } void entreorden(arbolptr pactual) { if(pactual!=NULL) { entreorden(pactual->left); printf("%d",pactual->info); entreorden(pactual->right); } } void posorden(arbolptr pactual) { if(pactual!=NULL) { posorden(pactual->left); posorden(pactual->right); printf("%d",pactual->info); } }

You might also like