Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <math.h>
- #include <stddef.h>
- #include <time.h>
- int k=0;
- int randomazer (int min, int max){
- float random;
- random = rand();
- random = (random / RAND_MAX) * (max-min) + min;
- return((int)random);
- }
- typedef struct fff {
- int key;
- int lengh;
- struct fff *left;
- struct fff *right;
- struct fff *parent;
- } node;
- node* new_node (int key, node *parent){
- node *tmp = (node*)malloc(sizeof(node));
- tmp -> left = tmp -> right = NULL;
- tmp -> key = key;
- tmp -> parent = parent;
- tmp -> lengh = 1;
- if (parent!=NULL) {
- tmp -> lengh = tmp -> parent -> lengh +1;
- }
- if (k<tmp->lengh) k=tmp->lengh;
- // printf("\n lengh: %d \n", tmp -> lengh);
- // printf("3");
- return tmp;
- }
- void add_node (node **head, int key){
- if (*head == NULL){ //if tree empty
- *head = new_node (key, NULL);
- // printf("4");
- }
- else{
- node *iter = *head;
- // printf("5");
- while (iter){
- // printf("6");
- if (key >= (iter -> key)){
- // printf("7");
- if (iter -> right){
- // printf("8");
- iter = iter -> right;
- }
- else{
- // printf("9");
- iter -> right = new_node (key, iter);
- break;
- }
- }
- else{
- // printf("10");
- if (iter -> left){
- // printf("11");
- iter = iter -> left;
- }
- else{
- // printf("12");
- iter -> left = new_node (key, iter);
- break;
- }
- }
- }
- }
- }
- void output_ (node *head) {
- node *iter2 = head;
- if (iter2) {
- output_(iter2 -> left);
- printf("%d ", iter2 -> key);
- output_(iter2 -> right);
- }
- }
- int main (void){
- int min, max, max_h, h=0, r;
- srand(time(NULL));
- scanf ("%d %d %d", &min, &max, &max_h);
- node *head = NULL;
- while (k < max_h){
- r = randomazer (min, max);
- // printf ("%d ", r);
- add_node(&head, r);
- }
- printf ("\n");
- output_(head);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement