void medis::del(node1 * cur ,node1* parent ) { node1* tmp; node1* child; tmp = cur; if ((cur->right == NULL) && (cur->left == NULL)) // If element is leaf { if (parent->right == cur) parent->right = NULL; else if (parent->left == cur) parent->left = NULL; delete cur; } parent = NULL; if (((cur->right != NULL) && (cur->left != NULL)) || (cur->right != NULL)) // If exists right->left and left->right or only right->left of deleting element { parent = cur; cur = cur->right; if (cur->left) { while(cur->left) { parent = cur; cur = cur->left; } tmp->kaina = cur->kaina; tmp->preke = cur->preke; parent->left = NULL; delete cur; cur = NULL; } else if (cur->right) { child = cur->right; parent->kaina = cur->kaina; parent->preke = cur->preke; parent->right = child; cur->right = NULL; delete cur; } else if ((cur->right == NULL) && (cur->left == NULL)) { parent->kaina = cur->kaina; parent->preke = cur->preke; parent->right = NULL; delete cur; } } if (cur->left) { parent = cur; cur = cur->left; if (cur->right) { while(cur->right) { parent = cur; cur = cur->right; } tmp->kaina = cur->kaina; tmp->preke = cur->preke; parent->right = NULL; delete cur; cur = NULL; } else if (cur->left) { child = cur->left; parent->kaina = cur->kaina; parent->preke = cur->preke; parent->left = child; cur->left = NULL; delete cur; } else if ((cur->right == NULL) && (cur->left == NULL)) { parent->kaina = cur->kaina; parent->preke = cur->preke; parent->left = NULL; delete cur; } } }