Advertisement
Guest User

Untitled

a guest
Apr 27th, 2015
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 KB | None | 0 0
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3.  
  4. struct bin_tree
  5. {
  6. int data;
  7. struct bin_tree * right, * left;
  8. };
  9. typedef struct bin_tree node;
  10.  
  11. void insert(node ** tree, int val)
  12. {
  13. node *temp = NULL;
  14. if(!(*tree))
  15. {
  16. temp = (node *)malloc(sizeof(node));
  17. temp->left = temp->right = NULL;
  18. temp->data = val;
  19. *tree = temp;
  20. return;
  21. }
  22.  
  23. if(val < (*tree)->data)
  24. {
  25. insert(&(*tree)->left, val);
  26. }
  27. else if(val > (*tree)->data)
  28. {
  29. insert(&(*tree)->right, val);
  30. }
  31.  
  32. }
  33.  
  34. void print_preorder(node * tree)
  35. {
  36. if (tree)
  37. {
  38. printf("%d\n",tree->data);
  39. print_preorder(tree->left);
  40. print_preorder(tree->right);
  41. }
  42.  
  43. }
  44.  
  45. void print_inorder(node * tree)
  46. {
  47. if (tree)
  48. {
  49. print_inorder(tree->left);
  50. printf("%d\n",tree->data);
  51. print_inorder(tree->right);
  52. }
  53. }
  54.  
  55. void print_postorder(node * tree)
  56. {
  57. if (tree)
  58. {
  59. print_postorder(tree->left);
  60. print_postorder(tree->right);
  61. printf("%d\n",tree->data);
  62. }
  63. }
  64.  
  65. void deltree(node * tree)
  66. {
  67. if (tree)
  68. {
  69. deltree(tree->left);
  70. deltree(tree->right);
  71. free(tree);
  72. }
  73. }
  74.  
  75. node* search(node ** tree, int val)
  76. {
  77. if(!(*tree))
  78. {
  79. return NULL;
  80. }
  81.  
  82. if(val < (*tree)->data)
  83. {
  84. search(&((*tree)->left), val);
  85. }
  86. else if(val > (*tree)->data)
  87. {
  88. search(&((*tree)->right), val);
  89. }
  90. else if(val == (*tree)->data)
  91. {
  92. return *tree;
  93. }
  94. }
  95.  
  96. int main(int argc, char* Param[])
  97. {
  98. node *root;
  99. node *tmp;
  100. int x;
  101. root = NULL;
  102.  
  103. /* Inserting nodes into tree
  104. insert(&root, 9);
  105. insert(&root, 4);
  106. insert(&root, 15);
  107. insert(&root, 6);
  108. insert(&root, 12);
  109. insert(&root, 17);
  110. insert(&root, 2);
  111. */
  112. while(x!=0)
  113. {
  114. scanf("%d",&x);
  115. insert(&root, x);
  116. }
  117.  
  118. /* /* Printing nodes of tree */
  119. printf("Pre Order Display\n");
  120. print_preorder(root);
  121.  
  122. printf("In Order Display\n");
  123. print_inorder(root);
  124.  
  125. printf("Post Order Display\n");
  126. print_postorder(root);
  127.  
  128. /* Search node into tree */
  129. tmp = search(&root, 4);
  130. if (tmp)
  131. {
  132. printf("Searched node=%d\n", tmp->data);
  133. }
  134. else
  135. {
  136. printf("Data Not found in tree.\n");
  137. }
  138.  
  139. /* Deleting all nodes of tree */
  140. deltree(root);
  141.  
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement