Paste Search Dynamic
struct node
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <ctype.h>
  5.  
  6. struct node{
  7. int v;
  8. struct node *left;
  9. struct node *right;
  10. };
  11.  
  12. int find(int i, struct node *abr){
  13.     /*int trouve=1;
  14.     if(abr==NULL){
  15.         return NULL;
  16.     }
  17.     find(i, abr->left);
  18.     if(abr->v==i){
  19.         trouve=0;
  20.         return trouve;
  21.     }
  22.     find(i, abr->right);
  23.     if(abr->v==i){
  24.         trouve=0;
  25.         return trouve;
  26.     }*/
  27.     if(abr==null){
  28.         return null;
  29.     }
  30.    
  31.     if(abr->v==i){
  32.         return abr;
  33.     }
  34.     if(abr->v<i){
  35.         return find(i, abr->right);
  36.     }else {
  37.         return find(i, abr->left);
  38.     }
  39.        
  40. }
  41.  
  42. struct node *insert(int i, struct node *abr){
  43.    
  44.     if(abr==null){
  45.             struct node * new;
  46.             new = malloc(sizeof(struct node *)); //ou calloc(1, sizeof(struct node *))
  47.             new->v = i;
  48.             new->left = null;
  49.             new->right = null;
  50.             abr = new;
  51.         return abr;
  52.     }
  53.        
  54.     if(i>abr->v){
  55.         abr->right = insert(i, abr->right);
  56.     }else{
  57.         abr->left = insert(i, abr->left);
  58.     }  
  59. }
  60.  
  61. void print_infix(struct node *n){
  62.    
  63.     //si je suis face a une feuille
  64.     if(n==null) {
  65.         return null;
  66.     }
  67.     print_infix(n->left);
  68.     printf("%d \n", n->v);
  69.     print_infix(n->right);
  70. }
  71.  
  72. int construire_arbre(){
  73. //E1 donnez moi le k = nombre d'elements a inserer
  74.     int k;
  75.     printf("Donner le nombre d'éléments à insérer \n");
  76.     scanf("%d", &k);
  77. //E2 je boucle de i=1 à i<=k et a chaque tour de boucle je : insert une valeure demande a l'utilise  
  78.     struct node *abr=malloc(sizeof(struct node *);
  79.     int k2;
  80.     for (int i=1; i<=k; i++){
  81.         printf("Donner un nombre \n");
  82.         scanf("%d", &k2);
  83.         insert(k2, abr);
  84.     }
  85.     return abr;
  86. }
  87.  
  88. int verif_present(struct node *abr){  
  89.     int n;
  90.     printf("Donner un entier\n");
  91.     scanf("%d", &n);
  92.     return find(n, abr);
  93.        
  94. }
  95.  
  96. int main (){
  97.    
  98.     //preparer fils gauche
  99.     struct node *node_left =malloc(sizeof(struct node *));
  100.     node_left->v = 1;
  101.     node_left->left=null;
  102.     node_left->right=null;
  103.    
  104.     //preparer fils droit
  105.         struct node *node_right =malloc(sizeof(struct node *));
  106.     node_right->v = 4;
  107.     node_right->left=null;
  108.     node_right->right=null;
  109.    
  110.     //prepare le parent
  111.     struct node *abr=malloc(sizeof(struct node *));
  112.     abr->v=3;
  113.     //abr->left=malloc(sizeof(struct node *));
  114.     //print_infix(abr_left);
  115.     /*
  116.     abr->left=node_left;
  117.     abr->right=node_right;
  118.     find(4, abr);
  119.     insert(5, abr);
  120.     print_infix(abr);
  121.     */
  122.     struct node *abr2=malloc(sizeof(struct node *));
  123.     abr2=construire_arbre();
  124.     verif_present(abr2);
  125. }
Parsed in 0.016 seconds