fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct node {
  5. int centro;
  6. struct node * izquierda;
  7. struct node * derecha;
  8. };
  9. //1 = NULL, luego !=NULL ALLOCATED
  10. struct node * crear(struct node *nudo, int n_valor){//crear y darle valor NUDO
  11. nudo = (struct node*)malloc(sizeof(struct node));
  12. (*nudo).izquierda = NULL;
  13. (*nudo).derecha = NULL;
  14. (*nudo).centro = n_valor;
  15. return nudo;
  16. }
  17.  
  18. void middle(struct node * nudo, int valor){//organizar arbol
  19. if((*nudo).centro > valor){
  20. if((*nudo).izquierda != NULL)
  21. middle((*nudo).izquierda, valor);
  22. (*nudo).izquierda = crear((*nudo).izquierda, valor);
  23. }
  24. else if((*nudo).centro < valor){
  25. if((*nudo).derecha != NULL)
  26. middle((*nudo).derecha,valor);
  27. (*nudo).derecha = crear((*nudo).derecha, valor);
  28. }
  29.  
  30. return;
  31. }
  32.  
  33. void liberar(struct node * nudo){//liberar memoria
  34. if((*nudo).izquierda!= NULL)
  35. liberar((*nudo).izquierda);
  36. if((*nudo).derecha != NULL)
  37. liberar((*nudo).derecha);
  38. free(nudo);
  39. }
  40.  
  41. int main(){
  42. struct node * valor;
  43. int *num, c = 0, max= 0, i =0;
  44. printf("max: ");
  45. scanf("%d", &max);
  46.  
  47. num = (int *)malloc(max*sizeof(int));
  48. while(i < max){//guardar valores
  49. printf("num: ");
  50. scanf("%d", &c);
  51. num[i] = c;
  52. i++;
  53. }
  54. valor = (struct node *)malloc(sizeof(struct node));
  55. (*valor).centro = num[0];//memoria 1node //main node
  56.  
  57. for(i =0;i<max;i++)//arbol
  58. middle(valor, num[i]);
  59.  
  60. liberar(valor);
  61. free(num);
  62.  
  63. return 0;
  64. }
  65.  
Success #stdin #stdout 0.01s 5276KB
stdin
45
stdout
max: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: num: