Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct Node {
- kvartira key;
- Node* left = NULL;
- Node* right = NULL;
- Node* parent = NULL;
- };
- class Tree {
- private:
- Node* root = NULL;
- void push_priv(Node* p, kvartira k);
- void print_tree_priv(Node* p);
- void Del(Node* n);
- public:
- void push(kvartira key);
- void print_tree();
- kvartira search();
- };
- void Tree::push(kvartira newkey) {
- if (root == NULL) {
- Node* n = new Node();
- n->key.setkvartira(newkey.getkk1(), newkey.getpl1(), newkey.getetag1(), newkey.getrayon1(), newkey.getkk2(), newkey.getpl2(), newkey.getetag2(), newkey.getrayon2());
- root = n;
- }
- else {
- push_priv(root, newkey);
- }
- }
- void Tree::push_priv(Node* p, kvartira newkey) {
- if (newkey.getnum() > p->key.getnum()) {
- if (p->right == NULL) {
- p->right = new Node();
- p->right->key.setkvartira(newkey.getkk1(), newkey.getpl1(), newkey.getetag1(), newkey.getrayon1(), newkey.getkk2(), newkey.getpl2(), newkey.getetag2(), newkey.getrayon2());
- p->right->parent = p;
- }
- else {
- push_priv(p->right, newkey);
- }
- }
- else {
- if (p->left == NULL) {
- p->left = new Node();
- p->left->key.setkvartira(newkey.getkk1(), newkey.getpl1(), newkey.getetag1(), newkey.getrayon1(), newkey.getkk2(), newkey.getpl2(), newkey.getetag2(), newkey.getrayon2());
- p->left->parent = p;
- }
- else {
- push_priv(p->left, newkey);
- }
- }
- }
- void Tree::print_tree() {
- if (root == NULL) {
- cout << "Пустая база" << endl;
- }
- else {
- print_tree_priv(root);
- }
- }
- void Tree::print_tree_priv(Node* p) {
- if (p->left != NULL) {
- print_tree_priv(p->left);
- }
- p->key.getkvartira();
- if (p->right != NULL) {
- print_tree_priv(p->right);
- }
- }
- void Tree::Del(Node *n)
- {
- if (!n)
- return;
- Del(n->left);
- Del(n->right);
- delete n;
- n = NULL;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement