rendered paste bodyvoid 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;
}
}
/*}
else
if (cur->left) // If exists only left->right of deleting element
{
cur = cur->left;
while(cur->right)
{
parent = cur;
cur = cur->right;
}
tmp->kaina = cur->kaina;
tmp->preke = cur->preke;
parent->right = NULL;
delete cur;
cur = NULL;
}
if (!(cur->right->left && cur->left->right))
if((cur->right && cur->left) || cur->right)
{
parent = cur;
cur = cur->right;
child = cur;
parent->kaina = cur->kaina;
parent->preke = cur->preke;
parent->right = child;
cur->right = NULL;
// delete cur;
}
else
if(cur->left)
{
parent = cur;
cur = cur->left;
child = cur;
parent->kaina = cur->kaina;
parent->preke = cur->preke;
parent->left = child;
cur->left = NULL;
delete cur;
}
}*/
/* while(cur)
{
if ((cur->right != NULL) && (cur->left == NULL))
{
parent = cur;
cur = cur->right;
}
else if ((cur->right == NULL) && (cur->left != NULL))
{
parent = cur;
cur = cur->left;
}
else if ((cur->right != NULL) && (cur->left != NULL))
{
parent = cur;
cur = cur->left->right;
}
else if ((cur->right == NULL) && (cur->left == NULL))
{
tmp->kaina = cur->kaina;
tmp->preke = cur->preke;
if (parent)
{
if (parent->left != tmp)
{
parent->left = NULL;
}
else parent->right = NULL;
}
delete cur;
cur = NULL;
break;
}
}*/
}