Advertisement
Guest User

binarySearchTree.c

a guest
May 26th, 2018
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.21 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct _node {
  5.     int data;
  6.     struct _node *left, *right;
  7. } node;
  8.  
  9. node *root = NULL;
  10.  
  11. node *createNode(int data) {
  12.     node *newNode = malloc(sizeof(node));
  13.    
  14.     newNode -> data = data;
  15.     newNode -> left = newNode -> right = NULL;
  16.    
  17.     printf("Node %d created\n", data);
  18.    
  19.     return newNode;
  20. }
  21.  
  22. node *findNode(node *tree, int data) {
  23.     if (tree == NULL) {
  24.         return NULL;
  25.     }
  26.    
  27.     printf("%d ", tree -> data);
  28.    
  29.     if (data == tree -> data) {
  30.         return tree;
  31.     }
  32.    
  33.     if (data < tree -> data) {
  34.         return findNode(tree -> left, data);
  35.     }
  36.    
  37.     return findNode(tree -> right, data);
  38. }
  39.  
  40. node *insertNode(node *tree, int data) {
  41.     if (root == NULL) {
  42.         root = createNode(data);
  43.         return NULL;
  44.     }
  45.    
  46.     if (tree == NULL) {
  47.         return createNode(data);
  48.     }
  49.    
  50.     if (data < tree -> data) {
  51.         tree -> left = insertNode(tree -> left, data);
  52.     }
  53.     else {
  54.         tree -> right = insertNode(tree -> right, data);
  55.     }
  56. }
  57.  
  58. void inorderTraverse(node *tree) {
  59.     if (tree != NULL) {
  60.         inorderTraverse(tree -> left);
  61.         printf("%d ", tree -> data);
  62.         inorderTraverse(tree -> right);
  63.     }
  64. }
  65.  
  66. void preorderTraverse(node *root) {
  67.     if (root != NULL) {
  68.         printf("%d ", root -> data);
  69.         preorderTraverse(root -> left);
  70.         preorderTraverse(root -> right);
  71.     }
  72. }
  73.  
  74. void postorderTraverse(node *root) {
  75.     if (root != NULL) {
  76.         postorderTraverse(root -> left);
  77.         postorderTraverse(root -> right);
  78.         printf("%d ", root -> data);
  79.     }
  80. }
  81.  
  82. int main(void) {
  83.     printf("Creating tree...\n");
  84.     insertNode(root, 39);
  85.     insertNode(root, 56);
  86.     insertNode(root, 12);
  87.     insertNode(root, 34);
  88.     insertNode(root, 78);
  89.     insertNode(root, 32);
  90.     insertNode(root, 10);
  91.     insertNode(root, 89);
  92.     insertNode(root, 54);
  93.     insertNode(root, 67);
  94.     insertNode(root, 81);
  95.    
  96.     printf("\nInorder Traverse: ");
  97.     inorderTraverse(root);
  98.    
  99.     printf("\nPreorder Traverse: ");
  100.     preorderTraverse(root);
  101.    
  102.     printf("\nPostorder Traverse: ");
  103.     postorderTraverse(root);
  104.    
  105.     printf("\nFinding 8: ");
  106.     printf("%s", findNode(root, 8) ? "Found!" : "Not found!");
  107.    
  108.     printf("\nFinding 10: ");
  109.     printf("%s\n", findNode(root, 10) ? "Found!" : "Not found!");
  110.    
  111.     return 0;
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement