fork(1) download
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. typedef int tree_info;
  5. typedef struct no_arvbin * arvbin;
  6. struct no_arvbin {
  7. arvbin esq;
  8. tree_info dado;
  9. arvbin dir;
  10. };
  11.  
  12. void preordem(arvbin t);
  13.  
  14. /**Ex 1**/
  15. void preordemprintafolha(arvbin t);
  16.  
  17. /**Ex 2**/
  18. void encontraMaior(arvbin t, int *maior);
  19.  
  20. void criaRaiz (arvbin t);
  21.  
  22. int main() {
  23. arvbin a = (arvbin) malloc(sizeof(arvbin));
  24. arvbin b = (arvbin) malloc(sizeof(arvbin));
  25. arvbin c = (arvbin) malloc(sizeof(arvbin));
  26. arvbin d = (arvbin) malloc(sizeof(arvbin));
  27.  
  28. criaRaiz(a);
  29. criaRaiz(b);
  30. criaRaiz(c);
  31. criaRaiz(d);
  32.  
  33. a->dado = 6;
  34. b->dado = 3;
  35. c->dado = 2;
  36. d->dado = 4;
  37.  
  38. a->esq = b;
  39. a->dir = c;
  40.  
  41. b->esq = d;
  42.  
  43. int maior = -1;
  44. encontraMaior(a, &maior);
  45.  
  46. printf("%d", maior);
  47. return 0;
  48. }
  49.  
  50. void criaRaiz(arvbin t) {
  51. t->esq = NULL;
  52. t->dir = NULL;
  53. }
  54.  
  55. void preordem(arvbin t) {
  56. if (t != NULL) {
  57. printf("%d\n", t->dado);
  58. preordem(t->esq);
  59. preordem(t->dir);
  60. }
  61. }
  62.  
  63. void preordemprintafolha(arvbin t) {
  64. if (t != NULL) {
  65. if (t->dir == NULL && t->esq == NULL) {
  66. printf("%d\n", t->dado);
  67. }
  68. preordemprintafolha(t->esq);
  69. preordemprintafolha(t->dir);
  70. }
  71. }
  72.  
  73. void encontraMaior(arvbin t, int *maior) {
  74. /*system("pause\n");
  75.   printf("%d ", *maior);
  76.   printf(" %p\n", maior);
  77.   system("pause");*/
  78. if (t != NULL) {
  79. if (*maior < t->dado) {
  80. *maior = t->dado;
  81. //printf("%p %p", maior, &t->dado);
  82. }
  83.  
  84. encontraMaior(t->esq, maior);
  85. encontraMaior(t->dir, maior);
  86. }
  87. }
Success #stdin #stdout 0s 9424KB
stdin
Standard input is empty
stdout
6