protected STNode<Key, Value> deleteMin(STNode<Key, Value> x)
	{
		// No left child. This is the minimum node. Orphan it by returning its
		// right subtree
		if (x.left == null)
			return x.right;

		// the minimum lies in the left subtree
		x.left = deleteMin(x.left);

		// Update size and height on the way up(from the recursive calls)
		x.N = size(x);
		x.h = height(x);

		return x;
	}