Advertisement
Guest User

Untitled

a guest
Mar 29th, 2020
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <assert.h>
  4.  
  5.  
  6. typedef struct node node;
  7. typedef node *tree;
  8. struct node{
  9. int val ;
  10. tree left;
  11. tree right;
  12. };
  13.  
  14.  
  15. //exo1
  16.  
  17. void print_abr(tree arbre){
  18. if (arbre!=NULL){
  19. print_abr(arbre->left);
  20. if (arbre ->left!=NULL) printf(";");
  21. printf("%d",arbre->val);
  22. if (arbre->right!=NULL) printf(";");
  23. print_abr(arbre->right);
  24. }
  25. }
  26.  
  27. //exo2
  28.  
  29. tree leaf(int val){
  30. tree t = malloc(sizeof(node));
  31. assert(t!=NULL);
  32. t->left=NULL;
  33. t->right=NULL;
  34. t->val=val;
  35. return t;
  36. }
  37.  
  38.  
  39. tree insert_abr(tree t, int val){
  40. if(t==NULL) return leaf(val);
  41. if(val<t->val){
  42. t->left=insert_abr(t->left,val);
  43. }
  44. if(val>t->val){
  45. t->right=insert_abr(t->right,val);
  46. }
  47. if(val==t->val) return t;
  48. }
  49.  
  50. void free_tree(tree t){
  51. if (t==NULL) return;
  52. free_tree(t->left);
  53. free_tree(t->right);
  54. free(t);
  55. }
  56.  
  57. //exo3
  58.  
  59.  
  60.  
  61. tree max_abr(tree t){
  62. if (t==NULL)return NULL;
  63. if(t->right==NULL) return t;
  64. return max_abr(t->right);
  65.  
  66. }
  67.  
  68. tree min_abr(tree t){
  69. if (t==NULL)return NULL;
  70. if(t->left==NULL) return t;
  71. return min_abr(t->left);
  72.  
  73. }
  74.  
  75.  
  76. tree search_abr(tree t, int val){
  77. if (t==NULL) return NULL;
  78. if (val==t->val)return t;
  79. if (val<t->val) return search_abr(t->left,val);
  80. if (val>t->val) return search_abr(t->right,val);
  81. return NULL;
  82.  
  83. }
  84.  
  85.  
  86. //exo4
  87.  
  88.  
  89.  
  90.  
  91. int checkComp(tree t){
  92. int l=1,r=1;
  93. if(t->left==NULL && t->right==NULL)return 1;
  94. if(t->left!=NULL){
  95. if(t->val>=t->left->val){
  96. return 0;
  97. }else{
  98. l=checkComp(t->right);
  99. }
  100. }
  101. if(t->right!=NULL){
  102. if(t->val<=t->right->val){
  103. return 0;
  104. }
  105. else {
  106. r=checkComp(t->right);
  107. }
  108. }
  109. return l && r;
  110. }
  111.  
  112. int check_abr(tree t){
  113. if (t==NULL)return 1;
  114. return checkComp(t);
  115. }
  116.  
  117.  
  118. int main (){
  119. printf("k");
  120. tree t=leaf(10);
  121. printf("m");
  122. int a[10]={1,4,6,8,11,19,2,3,9,20};
  123. printf("i"); }
  124. for (int i=0;i<10;i++){
  125. printf("%d",a[i]);
  126. insert_abr(t,a[i]);
  127. printf("%d",a[i]);
  128. }
  129. print_abr(t);
  130. printf("\n");
  131. printf("%d",min_abr(t)->val);
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement