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