0001 template <typename T> bool RedBlack<T>::remove(const T& e) { 0002 if (!BST::remove(e)) return false; //先按BST规则删除_p的孩子_x,接替者为_r 0003 if (IsRed(_r)) //若接替者_r为红,则 0004 _r->color = RBT_BLACK; //只需令其继承_x的黑色,黑高度随即复原 0005 else if (!RbtBalanced(_p)) //若_r为黑色且_p失衡(原_x也为黑) 0006 solveDoubleBlack(); //从_p出发,做双黑修正 0007 return true; 0008 } //remove