All pastes #253380 Raw Edit

Something

public text v1 · immutable
#253380 ·published 2006-11-20 18:27 UTC
rendered paste body
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;
				}
		}
		

					
			/*}
			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;
					
				}
			}*/
}