Advertisement
Guest User

Untitled

a guest
Jun 18th, 2018
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.77 KB | None | 0 0
  1. struct Node {
  2. kvartira key;
  3. Node* left = NULL;
  4. Node* right = NULL;
  5. Node* parent = NULL;
  6. };
  7.  
  8. class Tree {
  9. private:
  10. Node* root = NULL;
  11. void push_priv(Node* p, kvartira k);
  12. void print_tree_priv(Node* p);
  13. void Del(Node* n);
  14.  
  15. public:
  16. void push(kvartira key);
  17. void print_tree();
  18. kvartira search();
  19.  
  20. };
  21.  
  22.  
  23. void Tree::push(kvartira newkey) {
  24. if (root == NULL) {
  25. Node* n = new Node();
  26. n->key.setkvartira(newkey.getkk1(), newkey.getpl1(), newkey.getetag1(), newkey.getrayon1(), newkey.getkk2(), newkey.getpl2(), newkey.getetag2(), newkey.getrayon2());
  27. root = n;
  28. }
  29. else {
  30. push_priv(root, newkey);
  31. }
  32. }
  33.  
  34. void Tree::push_priv(Node* p, kvartira newkey) {
  35. if (newkey.getnum() > p->key.getnum()) {
  36. if (p->right == NULL) {
  37. p->right = new Node();
  38. p->right->key.setkvartira(newkey.getkk1(), newkey.getpl1(), newkey.getetag1(), newkey.getrayon1(), newkey.getkk2(), newkey.getpl2(), newkey.getetag2(), newkey.getrayon2());
  39. p->right->parent = p;
  40. }
  41. else {
  42. push_priv(p->right, newkey);
  43. }
  44. }
  45. else {
  46. if (p->left == NULL) {
  47. p->left = new Node();
  48. p->left->key.setkvartira(newkey.getkk1(), newkey.getpl1(), newkey.getetag1(), newkey.getrayon1(), newkey.getkk2(), newkey.getpl2(), newkey.getetag2(), newkey.getrayon2());
  49. p->left->parent = p;
  50. }
  51. else {
  52. push_priv(p->left, newkey);
  53. }
  54. }
  55. }
  56.  
  57. void Tree::print_tree() {
  58. if (root == NULL) {
  59. cout << "Пустая база" << endl;
  60. }
  61. else {
  62. print_tree_priv(root);
  63. }
  64. }
  65.  
  66. void Tree::print_tree_priv(Node* p) {
  67. if (p->left != NULL) {
  68. print_tree_priv(p->left);
  69. }
  70.  
  71. p->key.getkvartira();
  72.  
  73. if (p->right != NULL) {
  74. print_tree_priv(p->right);
  75. }
  76. }
  77.  
  78. void Tree::Del(Node *n)
  79. {
  80. if (!n)
  81. return;
  82. Del(n->left);
  83. Del(n->right);
  84. delete n;
  85. n = NULL;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement