Advertisement
Guest User

Untitled

a guest
Feb 16th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.61 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4.  
  5. struct Node {
  6. int key;
  7. Node* right;
  8. Node* left;
  9. Node() {
  10. key = 0;
  11. left = NULL;
  12. right = NULL;
  13. }
  14. Node(int x) {
  15. key = x;
  16. left = NULL;
  17. right = NULL;
  18. }
  19. };
  20.  
  21. struct Tree {
  22. Node* root;
  23. Tree() {
  24. root = NULL;
  25. }
  26. };
  27.  
  28. void insertkey(int x, Node*& y) {
  29. if (y == NULL) {
  30. y = new Node;
  31. y->key = x;
  32. y->right = NULL;
  33. y->left = NULL;
  34. }
  35. else if (x > y->key) {
  36. insertkey(x, y->right);
  37. }
  38. else if (x < y->key) {
  39. insertkey(x, y->left);
  40. }
  41. }
  42.  
  43. Node* rightDelete(int x, Node* y) {
  44. if (y == NULL) {
  45. return NULL;
  46. }
  47. else if (x < y->key) {
  48. y->left = rightDelete(x, y->left);
  49. return y;
  50. }
  51. else if (x > y->key) {
  52. y->right = rightDelete(x, y->right);
  53. return y;
  54. }
  55. if (y->left == NULL) {
  56. return y->right;
  57. }
  58. else if (y->right == NULL) {
  59. return y->left;
  60. }
  61. else {
  62. int tmp = findMin(y->right)->key;
  63. y->key = tmp;
  64. y->right = rightDelete(tmp, y->right);
  65. return y;
  66. }
  67.  
  68. }
  69.  
  70. Node* findMin(Node* y) {
  71. while (y->left != NULL) {
  72. y = y->left;
  73. }
  74. return y;
  75. }
  76.  
  77. void straightleftbypass(Node *&t, ofstream& out) {
  78. if (t != NULL) {
  79. out << t->key << endl;
  80. straightleftbypass(t->left, out);
  81. straightleftbypass(t->right, out);
  82. }
  83. }
  84.  
  85. int main() {
  86. ifstream in("input.txt");
  87. ofstream out("output.txt");
  88. Node* tree = NULL;
  89. int num = 0;
  90. int delnum = 0;
  91. in >> delnum;
  92. if (in.is_open()) {
  93. while (in >> num) {
  94. insertkey(num, tree);
  95. }
  96. in.close();
  97. }
  98. rightDelete(delnum, tree);
  99. straightleftbypass(tree, out);
  100. out.close();
  101. system("pause");
  102. return 0;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement