--------------------------------	//可以删除的结点	if(!(*root))	return NULL;	if(isRed(*root) && !(*root)->left)	{	PRBTree Temp = *root;	*root = (*root)->right;	return Temp;	}	//只剩最后一个结点的情况	if(!(*root)->left && !(*root)->right)	{	PRBTree Temp = *root;	*root = NULL;	return Temp;	}	//需要借键的情况	if(!isRed((*root)->left) && !isRed((*root)->right))	borrowKeyMin(root);	PRBTree Temp = deleteMin(&(*root)->left);	(*root) = fixUp(*root);	return Temp; } //删除最大键 PRBTree deleteMax(PRBTree *root) {	//-------------------------------目的是确保需要删除的结点的上一个节点不是2结点,这样就可以直接删除--------------------------------	//将原本就是3结点的结点旋转成符合删除最大的形式	if(!(*root))	return NULL;	if(isRed((*root)->left))	*root = rightRotate(*root);	else if((*root)->right)	{	if(isRed((*root)->right->left)) (*root)->right = rightRotate((*root)->right);	}	//可以删除的结点	if(isRed((*root)) && !(*root)->right)	{	PRBTree Temp = (*root);	(*root) = (*root)->left;	return Temp;	}	//只剩最后一个结点的情况	if(!(*root)->left && !(*root)->right)	{	PRBTree Temp = *root;	*root = NULL;	return Temp;	}	//需要借键的情况	if(!isRed((*root)->left) && !isRed((*root)->right))	borrowKeyMax(root);	PRBTree Temp = deleteMax(&(*root)->right);	(*root) = fixUp(*root);	return Temp; }
想看思路的可以看这里,很清楚:
https://www.jianshu.com/p/37c845a5add6