Guest User

Untitled

a guest
Oct 18th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.99 KB | None | 0 0
  1. // This Program creates a binary search tree of integers and introduces //
  2. // the inorder recursive traversal of the tree. It is the basis for Project 5//
  3. // D. Pinto....CS 501...LATE Spring 2011 //
  4.  
  5.  
  6.  
  7. #include <iostream>
  8. using namespace std;
  9.  
  10. const int nil = 0;
  11. class treenode_type // declaration of class//
  12. {
  13. public: // Tree node type//
  14. int info;
  15. treenode_type *left;
  16. treenode_type *right;
  17. };
  18.  
  19. void setleft(int x);
  20. void setright(int x);
  21. void inorder(treenode_type *p);
  22. treenode_type *p,*q,*root;
  23. int number, counter=0;
  24. void main()
  25. {
  26. cout << "Enter first value: \n";
  27. cin >> number;
  28. cout << number << "\n";
  29. root = new treenode_type;
  30. (*root).info = number;
  31. (*root).left = nil;
  32. (*root).right = nil;
  33. cout <<"Enter 19 more numbers\n";
  34. cin >> number;
  35. while (counter < 18)
  36. {
  37. p = root;
  38. q = p;
  39. while ((number != (*p).info) && (q!=nil))
  40. {
  41. p = q;
  42. if (number < (*p).info)
  43. q = (*p).left;
  44. else
  45. q = (*p).right;
  46. }
  47. if (number == (*p).info)
  48. cout << number << " is a duplicate \n";
  49. else if (number < (*p).info) // Sets node to left if number less than p.info//
  50. {
  51. setleft(number);
  52. cout << number <<" is a left child of "<< (*p).info << "\n";
  53. }
  54. else // Sets node to right if number greater than p.info//
  55. {
  56. setright(number);
  57. cout << number <<" is a right child of "<< (*p).info << "\n";
  58. }
  59. cin >> number;
  60. counter++;
  61. }
  62. cout << "The tree traversed INORDER is \n";
  63. p = root;
  64. inorder(p);
  65. }
  66.  
  67. void setleft(int x) // Sets node to left //
  68. {
  69. treenode_type *q;
  70. q = new treenode_type;
  71. (*q).info = x;
  72. (*q).left = nil;
  73. (*q).right = nil;
  74. (*p).left = q;
  75. }
  76. void setright(int x)
  77. {
  78. treenode_type *q;
  79. q = new treenode_type;
  80. (*q).info = x;
  81. (*q).left = nil;
  82. (*q).right = nil;
  83. (*p).right = q;
  84. }
  85. void inorder(treenode_type *r)
  86. {
  87. if (r != nil)
  88. {
  89. inorder((*r).left);
  90. cout << (*r).info << "\n";
  91. inorder((*r).right);
  92. }
  93. }
Add Comment
Please, Sign In to add comment