void postorden(struct arbol *A){
          if(A != NULL){
          postorden(A->izq);
          postorden(A->der);
          printf("%d ", A->valor);
          }
     }
Exemple #2
0
void postorden(struct nodo * raiz){
	if(raiz != NULL){
		postorden(raiz->izquierdo);
		postorden(raiz->derecho);
		printf("%d ",raiz->dato);
	}
}
Exemple #3
0
void postorden( struct nodo *ptr , int profundidad){
    
    if( ptr != NULL){
        postorden(ptr->izquierda,profundidad+1);
        postorden(ptr->derecha,profundidad+1);
        printf("%d -- prof: %d\n" ,ptr->a.nia,profundidad);
    }
}
Exemple #4
0
void postorden(ptrNodo a)
{
  if (a != NULL) {
    postorden(a->izq);
    postorden(a->der);
    printf("%d\n",a->clave);
  }
}
Exemple #5
0
void
postorden(arbol_t *arbol)
{
    if(arbol != NULL) {
        postorden(arbol->izq);
        postorden(arbol->der);
        printf("%d\n", arbol->dato);
    }
}
Exemple #6
0
void postorden(ARBOL A)
{       if(A==NULL)
                return;
        postorden(A->izq);
        postorden(A->der);
	char c[5];
	SDL_BlitSurface(nodo_visitado,NULL,screen,&(A->pos));
        sprintf(c,"%d ",A->dato);
        print_on_screen(&c[0],A->pos.x+6,A->pos.y+6,fcolor,arbol_ttf);
        SDL_Flip(screen);
        SDL_Delay(1500);
        SDL_BlitSurface(nodo_img,NULL,screen,&(A->pos));
        sprintf(c,"%d ",A->dato);
        print_on_screen(&c[0],A->pos.x+6,A->pos.y+6,fcolor,arbol_ttf);
        imprimir_recorridos(A->dato);
        SDL_Flip(screen);       
}
Exemple #7
0
void menu()
{
	ptrNodo raiz=NULL;
	int opcion = 0, valor = 0;
	do
	{
		system("cls");
		printf("[1] Ingresar numero\n");
		printf("[2] Recorrido pre-orden\n");
		printf("[3] Recorrido in-orden\n");
		printf("[4] Recorrido post-orden\n");
		printf("[5] Salir\n\n");
		printf("\t\tIngrese su opcion: [ ]\b\b");
		scanf("%d",&opcion);
		switch(opcion)
		{
			case 1:
				system("cls");
				printf("Ingresa el valor: ");
				scanf("%d",&valor);
				Insertar(&raiz,valor);
				system("pause");
				break;
			case 2:
				system("cls");
				preorden(raiz);
				system("pause");
				break;
			case 3:
				system("cls");
				inorden(raiz);
				system("pause");
				break;
			case 4:
				system("cls");
				postorden(raiz);
				system("pause");
				break;
			case 5:
				system("cls");
				printf("Salida\n");
				break;
			default:
				system("cls");
				printf("error\n");
				system("pause");
				break;
		}
	}while(opcion != 5);
}
Exemple #8
0
int
main()
{
    arbol_t *arbol = NULL;
    arbol = insertar(arbol, 10);
    arbol = insertar(arbol, 8);
    arbol = insertar(arbol, 7);
    arbol = insertar(arbol, 12);
    arbol = insertar(arbol, 11);
    arbol = insertar(arbol, 13);
    puts("preorden(arbol);");
    preorden(arbol);
    puts("inorden(arbol);");
    inorden(arbol);
    puts("postorden(arbol);");
    postorden(arbol);
    puts("altura(arbol);");
    printf("%d\n", altura(arbol));
}
Exemple #9
0
int main() {

  Arbol a = NULL; // Se crea un árbol vacío.

  // Ahora se insertan unos cuantos valores

  inserta(100, &a);
  inserta(200, &a);
  inserta(50, &a);
  inserta(150, &a);
  inserta(250, &a);
  inserta(20, &a);
  inserta(75, &a);
  inserta(60, &a);
  inserta(80, &a);
  inserta(170, &a);
  inserta(230, &a);
  inserta(300, &a);
  inserta(30, &a);
  inserta(120, &a);

  // Un recorrido para ver que todo está bien
  printf("\nBusqueda ENORDEN\n");
  enorden(a);

  // Ahora se hacen algunas búquedas

  if (busca(60, a)) printf("\nmuy bien\n");
  else printf("\nmuy mal\n");

  if (busca(85,a)) printf("\nmuy mal\n");
  else printf("\nmuy bien\n");

  // Ahora borramos un elemento del árbol

  elimina(60, &a);

  // Para ver que se haya hecho bien, se hace un recorrido
  printf("\nBusqueda ENORDEN\n");
  enorden(a);

  // Ahora borramos otro elemento.

  elimina(75, &a);

  // De nuevo, revisamos que todo esté bien
  printf("\nBusqueda ENORDEN\n");
  enorden(a);

  // Finalmente, borramos otro elemento

  elimina(200, &a);
  

  // Revisamos
  printf("\nBusqueda ENORDEN\n");
  enorden(a);

  // Ahora los otros recorridos, para que no hayan sido en balde
  printf("\nBusqueda PREORDEN\n");
  preorden(a);
  printf("\nBusqueda POSTORDEN\n");
  postorden(a);

}
 main()
{
  nom *t,*q,*p,*avail;
  int max,n,k;
  unsigned int sw=0;

  char opcion,opcion1,inf,info;

  sw=0;
  do{
     
     clrscr();
     gotoxy (30,2);
     printf ("");
     gotoxy (30,3);
     printf (" MENÚ PRINCIPAL ");
     gotoxy (30,4);
     printf ("");
     gotoxy(31.4,10);
     printf("1- INICIALIZACION ");
     gotoxy(31.4,12);
     printf("2- CREAR NODOS ");
     gotoxy(31.4,14);
     printf("3- MOSTRAR ");
     gotoxy(31.4,16);
     printf("4- CANCELAR");
     gotoxy(31.4,18);
     printf("5- SALIR");
     gotoxy(31.4,22);
     printf("POR FAVOR DIGITE LA OPCION DESEADA :  ");
     gotoxy(68,22);




     do{
	opcion=getchar();
     }while(opcion<'0' && opcion>'4');

      switch (opcion){
		    case '1':if (sw==0){
		    sw=1;
		    t=0;
		    clrscr();
		    printf("EL ARBOL YA ESTA  INICIALIZADO\n");
		    validar(opcion);
	      }
	      else{
		  clrscr();
		  printf("EL ARBOL YA ESTA  CREADO ");
		  validar(opcion);
	     }
	     break;

	case '2': if (sw==0){
			clrscr();
			printf("EL ARBOL NO  ESTA INICIALIZADO ");
			validar(opcion);
		   }
		    else{
			 clrscr();
			 lea_info(&inf);
			 crear_arbol_busqueda(&t,inf);
		  }
		   break;

	case  '3':if (sw==0){
		     clrscr();
		     printf("EL ARBOL NO ESTA INICIALIZADO ");
		     validar(opcion);
		   }
		   else{
		       do{

	           clrscr();
		   gotoxy (30,2);
		   printf ("");
                   gotoxy (30,3);
		   printf ("     SUBMENÚ DE ORDENAMIENTO      ");
                   gotoxy (30,4);
		   printf ("");
	           gotoxy(33,12);
	           printf("1- PREORDEN");
	           gotoxy(33,14);
	           printf("2- INORDEN");
	           gotoxy(33,16);
	           printf("3- POSTORDEN");
	           gotoxy(33,18);
	           printf("4- RETORNAR");
	           gotoxy(33,22);
	           printf("POR FAVOR DIGITE LA OPCION DESEADA : ");
	           gotoxy(69,23);
			 do{
			    opcion1=getchar();
			 }while (opcion1<'0' && opcion1>'4');
		   switch(opcion1){	 
		   case '1':
			clrscr();
			gotoxy(25.5,2);
			printf("EL RECORRIDO EN PREORDEN ES:\n");
			preorden(t);
			validar(opcion1);
			break;

		  case '2':
	                clrscr();
			gotoxy(25.5,2);
			printf("EL RECORRIDO  EN INORDEN ES:\n");
		        inorden(t);
			validar(opcion1);
			break;
		  case '3':
	                clrscr();
			gotoxy(25,2);
			printf("EL RECORRIDO EN POSTORDEN ES:\n");
			postorden(t);
			validar(opcion1);
			break;
			default:break;
		}
		 }while(opcion1!='4');
	      }
               break;
       case '4':if(t==0){
		printf ("ARBOL ESTA VACIO POR FAVOR NO  CANCELAR ");
                }

		else{
		printf ("DIGITE LA INFORMACION A CANCELAR");
		 lea_info(&info);
		remover_nodo_arbol(&t,info,avail);
	          }
		break;
		default:break;	
	       }
	      }while(opcion !='5');
	      clrscr();
	      printf("EL PROCESO HA TERMINADO , GRACIAS ");
	    }
Exemple #11
0
int main(int argc, char *argv[]) {
	setlocale(LC_ALL, "");
	int s = 1,opc = 0, contador = 0;
	while(s){
		system("cls");
		printf("Árbol binario (Doble apuntador)");
		printf("\nSelecciona una opción");
		printf("\n1) Meter datos");
		printf("\n2) Imprimir en preorden");
		printf("\n3) Imprimir en inorden");
		printf("\n4) Imprimir en postorden");
		printf("\n5) Imprimir todo");
		printf("\n6) Obtener la profundidad del árbol");
		printf("\n7) Eliminar datos");
		printf("\n8) Buscar");
		printf("\n9) Salir\n");
		scanf("%d",&opc);
		switch(opc){
			case 1:
				printf("\nInserta un valor: ");
				scanf("%d", &valor);
				system("cls");
				insertar();
				break;
			case 2:
				preorden(raiz);
				getch();
				break;
			case 3:
				inorden(raiz);
				getch();
				break;
			case 4:
				postorden(raiz);
				getch();
				break;
			case 5:
				system("cls");
				printf("Valores del árbol:");
				imprimir(raiz,contador);
				getch();
				break;	
			case 6:
				printf("Profundidad: %d",profundidad(raiz));
				getch();
				break;
			case 7:
				printf("\nInserta un valor: ");
				scanf("%d", &valor);
				system("cls");
				eliminar(&raiz,valor);
				break;
			case 8:
				printf("\nInserta un valor: ");
				scanf("%d", &valor);
				system("cls");
				printf("Se encontró el valor %d",(buscar(raiz,valor))->dato);
				getch();
				break;
			case 9:
				s = 0;
				break;
			default:
				printf("Muy mal >:(");
				getch();
				break;
		}
	}
	system("cls");
	printf("Adiós");
	return 0;
}
int main (){
    
int salida = 0, salida2 = 0, opc, listar_opc;
int ndato, val;

    struct arbol *A;
    A = NULL;


do{
    
printf("1) Insertar\n2) Borrar\n3) Listar\n4) Salir\n=============================\n");
    printf("Seleccione una opcion:\t");
    scanf("%d",&opc);
    switch(opc){
                case 1:                  
                     
                     printf("Ingrese un nuevo número:\t");
                     scanf("%d",&ndato);
                     insertar(&A, ndato);
                   
                     break;
                case 2:
                          do{
                          printf("Seleccione el valor del nodo a borrar:\t");
                          scanf("%d", &val);
                          }while((encontrar(A, val) )  != 0);
                     borrar(&A, val);
                     break;
                case 3:
                     do{
                     printf("1) Preorden\n2) Inorden\n3) Postorden\n4) Salir\n===============\n");
                     printf("Seleccione una opcion:\t");
                     scanf("%d",&listar_opc);                     
                     switch(listar_opc){
                     case 1:
                     preorden(A);
                     printf("\n");
                     break;
                     case 2:
                     inorden(A);
                     printf("\n");
                     break;
                     case 3:
                     postorden(A);
                     printf("\n");
                     break;
                     case 4:
                     salida2 = 1;
                     break;
                     default:
                     salida2 = 0;
                     break;
                     
                     }
                     }while(salida2 == 0);
                     //listar(A);
                     break;
                case 4:
                     salida = 1;
                     break;
                default:
                     salida = 0;
                        break;
                }
    }while(salida == 0);


getchar();  
    return 0;
    }
 void  main()
 {
    avl *T,*q,*p,*avail,*pp,*pivote;
    char opcion,opcion1,inf;
    unsigned int sw=0,SW=0;
    do{
       menu ();
       do{
	  opcion=getchar();
       }while(opcion<'0' && opcion>'5');
       switch (opcion){
	  case '1':
		   if (sw==0){
		       T=0;
		       sw=1;
		       SW=1;
		       avail=0;
		       clrscr();
		       gotoxy(31,12);
		       printf("ARBOL INICIALIZADO");
		       validar();
		   }
		   else{
			clrscr();
			gotoxy(24,12);
			printf("ARBOL YA CREADO ");
			validar();
		   }
	  break;
	  case '2':
		   if (sw==0){
		      control_sw();
		    }
		    else{

			 clrscr();
			 gotoxy(24,12);
			 printf("DIGITE LA INFORMACION = ");
			 gotoxy(47,12);

			 lea_info(&inf);
		      // validar();
			  SW=0;
			 construiarbol(&T,inf);
			 //inser_avl(&T,inf);
			 //crear_arbol_busqueda(&T,inf);
		    }
	  break;
	  case '3':
		   if (sw==0){
		    control_sw();
		    }
		    else{
			 if(SW==0){
			 do{
			    submenu();
			    do{
			       opcion1=getchar();
			    }while (opcion1<'0' && opcion1>'4');

			    switch(opcion1){
				case '1':
					 clrscr();
					 gotoxy(20,2);
					 printf("RECORRIDO DE UN ARBOL EN PREORDEN");

					 gotoxy(20,8);
					 preorden(T);
					 validar();

				break;
				case '2':
					 clrscr();
					 gotoxy(23,2);
					 printf("RECORRIDO DE UN ARBOL EN POSTORDEN");
					 gotoxy(20,8);
					 postorden(T);
					 validar();

				break;
				case '3':
					 clrscr();
					 gotoxy(24,2);
					 printf("RECORRIDO DE UN ARBOL EN INORDEN");
					 gotoxy(23.5,8);
					 inorden(T);
					 validar();

				break;
				default:break;
			    }
			 }while(opcion1!='4');

			  }
			  else{
			  control_sw1();
			  }

		    }
	  break;
	  case '4':if(sw==0){
		     control_sw();
		    }

		    else{
		      if(SW==0){
		      clrscr();
		      gotoxy(24,12);
		      printf("DIGITE LA INFORMACION A CANCELAR = ");
		      lea_info(&inf);
		      clrscr();
		      remover_nodo_del_arbol_avl(&T,inf,avail,&SW);
		       preorden_avl(T);
		      }
		      else{
			  control_sw1();
		      }
		    }
	  break;
	 default:break;
       }

    }while(opcion!= '5');
   clrscr();
    T=0;
    gotoxy(30,12);
    printf("FIN DE PROCESO");
}
Exemple #14
0
void ventana_recorridos()
{	SDL_Rect pos;
	char c[40];
	pos.x=300; pos.y=251;
	SDL_BlitSurface(mini_window,NULL,screen,&pos);
	sprintf(c,"Recorridos :");
	print_on_screen(&c[0],370,260,fcolor,font);
	pos.x+=110;pos.y+=50;
	SDL_BlitSurface(tipos_recorridos[0][0],NULL,screen,&pos);
	pos.y+=30;
	SDL_BlitSurface(tipos_recorridos[1][0],NULL,screen,&pos);
	pos.y+=30;
	SDL_BlitSurface(tipos_recorridos[2][0],NULL,screen,&pos);
	pos.x+=119;pos.y+=34;
	SDL_BlitSurface(boton_cancelar[0],NULL,screen,&pos);
	SDL_Flip(screen);
	int n=1;
	SDL_Event evento;
	while(n)
	{	SDL_WaitEvent(&evento);
                if(evento.type==SDL_MOUSEMOTION)
		{	if(posicion_cursor(410,410+tipos_recorridos[0][0]->w,301,301+tipos_recorridos[0][0]->h,evento.motion.x,evento.motion.y))
			{	pos.x=410; pos.y=301;
				SDL_BlitSurface(tipos_recorridos[0][1],NULL,screen,&pos);
			}
			else if(posicion_cursor(410,410+tipos_recorridos[1][0]->w,331,331+tipos_recorridos[1][0]->h,evento.motion.x,evento.motion.y))
			{	pos.x=410; pos.y=331,
				SDL_BlitSurface(tipos_recorridos[1][1],NULL,screen,&pos);
			}
			else if(posicion_cursor(410,410+tipos_recorridos[1][0]->w,361,361+tipos_recorridos[1][0]->h,evento.motion.x,evento.motion.y))
			{	pos.x=410; pos.y=361;
				SDL_BlitSurface(tipos_recorridos[2][1],NULL,screen,&pos);
			}
			else if(posicion_cursor(529,529+boton_cancelar[0]->w,395,395+boton_cancelar[0]->h,evento.motion.x,evento.motion.y))
			{	pos.x=529; pos.y=395;
				SDL_BlitSurface(boton_cancelar[1],NULL,screen,&pos);
			}
			else
			{	pos.x=410; pos.y=301;
                                SDL_BlitSurface(tipos_recorridos[0][0],NULL,screen,&pos);
				pos.x=410; pos.y=331,
                                SDL_BlitSurface(tipos_recorridos[1][0],NULL,screen,&pos);
				pos.x=410; pos.y=361;
                                SDL_BlitSurface(tipos_recorridos[2][0],NULL,screen,&pos);
				pos.x=529; pos.y=395;
                                SDL_BlitSurface(boton_cancelar[0],NULL,screen,&pos);

			}
			SDL_Flip(screen);
		}
		else if(evento.type==SDL_MOUSEBUTTONDOWN)
                {       if(posicion_cursor(410,410+tipos_recorridos[0][0]->w,301,301+tipos_recorridos[0][0]->h,evento.button.x,evento.button.y))
                        {	draw_interface_principal();
                                print_arbol(A,0);
				SDL_Rect recta_pos={0,600,900,80};
				SDL_FillRect(screen,&recta_pos,SDL_MapRGBA(screen->format,183,181,182,0));				
				char c[40];
				sprintf(c,"Recorrido Inorder :");
				print_on_screen(&c[0],30,600,fcolor,font_op);distancia=0;
				SDL_Flip(screen);
				inorden(A);
				return;
			}
			else if(posicion_cursor(410,410+tipos_recorridos[1][0]->w,331,331+tipos_recorridos[1][0]->h,evento.button.x,evento.button.y))
			{	draw_interface_principal();
                                print_arbol(A,0);
                                SDL_Rect recta_pos={0,600,900,80};
                                SDL_FillRect(screen,&recta_pos,SDL_MapRGBA(screen->format,183,181,182,0));
                                char c[40];
                                sprintf(c,"Recorrido Preorder :");
                                print_on_screen(&c[0],30,600,fcolor,font_op);distancia=0;
                                SDL_Flip(screen);
				preorden(A);
                                return;
			}
			else if(posicion_cursor(410,410+tipos_recorridos[1][0]->w,361,361+tipos_recorridos[1][0]->h,evento.button.x,evento.button.y))
			{	draw_interface_principal();
                                print_arbol(A,0);
                                SDL_Rect recta_pos={0,600,900,80};
                                SDL_FillRect(screen,&recta_pos,SDL_MapRGBA(screen->format,183,181,182,0));
                                char c[40];
                                sprintf(c,"Recorrido Posorder :");
                                print_on_screen(&c[0],30,600,fcolor,font_op);distancia=0;
                                SDL_Flip(screen);
				postorden(A);
                                return;
			}
			else if(posicion_cursor(529,529+boton_cancelar[0]->w,395,395+boton_cancelar[0]->h,evento.button.x,evento.button.y))
			{	draw_interface_principal();
                                print_arbol(A,0);
                                SDL_Flip(screen);
                                return;
			}
		}
		else if(evento.type==SDL_KEYDOWN && evento.key.keysym.sym==27)
                {       draw_interface_principal();
                        draw_menu_botones();
			print_arbol(A,0);
			SDL_Flip(screen);
			return;
		}
	}
	SDL_Flip(screen);
}