Advertisement
Guest User

Untitled

a guest
May 27th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.43 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5.  
  6. typedef struct Node {
  7.     struct Node *left;
  8.     struct Node *right;
  9.     int data;
  10. }Node;
  11.  
  12.  
  13. Node *create_node(int value){
  14.    Node * n = malloc(sizeof(Node));
  15.    n->left =  NULL;
  16.    n->right = NULL;
  17.    n->data = value;
  18.    return n;
  19. }
  20.  
  21. //-------------------------Traversals----------------------------------
  22. void prerder_traversal(Node * current){
  23.     if(current==NULL){
  24.         return;
  25.     }
  26.     printf("-> %d",current->data);
  27.     prerder_traversal(current->left);
  28.     prerder_traversal(current->right);
  29. }
  30.  
  31. void inorder_traversal(Node * current){
  32.     if(current==NULL){
  33.         return;
  34.     }
  35.     inorder_traversal(current->left);
  36.     printf("-> %d",current->data);
  37.     inorder_traversal(current->right);
  38. }
  39.  
  40.  
  41. void postorder_traversal(Node * current){
  42.     if(current==NULL){
  43.         return;
  44.     }
  45.     printf("-> %d",current->data);
  46.     postorder_traversal(current->left);
  47.     postorder_traversal(current->right);
  48. }
  49. //---------------------------------------------------
  50.  
  51.  
  52. void insert_data(int value , Node *root_){
  53.  
  54.    Node *t = malloc(sizeof(Node));
  55.    t->left =  NULL;
  56.    t->right = NULL;
  57.    t->data = value;
  58.  
  59.    if(root_==NULL){
  60.       root_ = t;
  61.    }
  62.    else
  63.    {
  64.       Node *curr, *parent;
  65.       curr = root_;
  66.  
  67.       while(curr){
  68.            parent = curr;
  69.           // printf("Current traversing node :- %d\n",curr->data);
  70.  
  71.            if(value > curr->data){
  72.                curr = curr->right;
  73.            }else{
  74.                curr = curr->left;
  75.            }
  76.       }
  77.  
  78.   //parent pointer is now at the correct position
  79.   if(parent->data > value){
  80.      parent->right = t;
  81.  
  82.   }else if(parent->data < value){
  83.      parent->left = t;
  84.  
  85.   }else{
  86.     printf("Duplicate found !");
  87.   }
  88. }
  89.  
  90. }
  91.  
  92.  
  93.  
  94.  
  95. int main(){
  96.  
  97. Node * root = create_node(20);
  98.  
  99.  
  100.  
  101. root->left = create_node(10);
  102. root->right = create_node(30);
  103.  
  104.  
  105. insert_data(70,root);
  106. insert_data(13,root);
  107. printf("\n\n");
  108. insert_data(23,root);
  109. insert_data(11,root);
  110. insert_data(24,root);
  111. insert_data(9,root);
  112. insert_data(12,root);
  113. insert_data(10,root);
  114. insert_data(21,root);
  115. insert_data(47,root);
  116. insert_data(50,root);
  117. insert_data(35,root);
  118.  
  119. printf("Pre order traversal \n");
  120. prerder_traversal(root);
  121. printf("\n\n");
  122.  
  123. printf("In order traversal \n");
  124. inorder_traversal(root);
  125. printf("\n\n");
  126.  
  127. printf("Post order traversal \n");
  128. postorder_traversal(root);
  129. printf("\n\n");
  130.  
  131. return 0;
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement