SHARE
TWEET

Binary tree

allekco Oct 17th, 2019 73 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5. #include <stddef.h>
  6. #include <time.h>
  7.  
  8. int k=0;
  9.  
  10. int randomazer (int min, int max){
  11.     float random;
  12.     random = rand();
  13.     random = (random / RAND_MAX) * (max-min) + min;
  14.     return((int)random);
  15. }
  16.  
  17. typedef struct fff {
  18.     int key;
  19.     int lengh;
  20.     struct fff *left;
  21.     struct fff *right;
  22.     struct fff *parent;
  23. } node;
  24.  
  25.  
  26. node* new_node (int key, node *parent){
  27.     node *tmp = (node*)malloc(sizeof(node));
  28.     tmp -> left = tmp -> right = NULL;
  29.     tmp -> key = key;
  30.     tmp -> parent = parent;
  31.     tmp -> lengh = 1;
  32.     if (parent!=NULL) {
  33.         tmp -> lengh = tmp -> parent -> lengh +1;
  34.     }
  35.    
  36.     if (k<tmp->lengh) k=tmp->lengh;
  37. //  printf("\n lengh: %d \n", tmp -> lengh);
  38. //  printf("3");
  39.     return tmp;
  40. }
  41.  
  42. void add_node (node **head, int key){
  43.     if (*head == NULL){ //if tree empty
  44.         *head = new_node (key, NULL);
  45.     //  printf("4");
  46.     }
  47.     else{
  48.         node *iter = *head;
  49.     //  printf("5");
  50.         while (iter){
  51.         //  printf("6");
  52.             if (key >= (iter -> key)){
  53.             //  printf("7");
  54.                 if (iter -> right){
  55.                 //  printf("8");
  56.                     iter = iter -> right;
  57.                 }
  58.                 else{
  59.                 //  printf("9");
  60.                     iter -> right = new_node (key, iter);
  61.                     break;
  62.                 }
  63.             }
  64.             else{
  65.             //  printf("10");
  66.                 if (iter -> left){
  67.                 //  printf("11");
  68.                     iter = iter -> left;
  69.                
  70.                 }
  71.                 else{
  72.                 //  printf("12");
  73.                     iter -> left = new_node (key, iter);
  74.                     break;
  75.                 }
  76.             }  
  77.         }
  78.     }
  79. }
  80.  
  81. void output_ (node *head) {
  82.     node *iter2 = head;
  83.     if (iter2) {
  84.         output_(iter2 -> left);
  85.         printf("%d ", iter2 -> key);
  86.         output_(iter2 -> right);
  87.     }
  88. }
  89.  
  90. int main (void){
  91.     int min, max, max_h, h=0, r;
  92.     srand(time(NULL));
  93.     scanf ("%d %d %d", &min, &max, &max_h);
  94.     node *head = NULL;
  95.    
  96.     while (k < max_h){
  97.         r = randomazer (min, max);
  98.     //  printf ("%d ", r);
  99.         add_node(&head, r);
  100.     }
  101.    
  102.     printf ("\n");
  103.     output_(head);
  104.      
  105.      return 0;
  106. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top