接着算法联系五,实现了红黑树的节点删除功能。
补充了五个函数,这里主要将 删除 和 删除修正两个函数给出,其它的就十分简单了。
//删除
RBNode* RBDelete(RBNode** proot, RBNode* pnode, RBNode* pguardNode);
//删除修正
void RBDeleteFixup(RBNode** proot, RBNode* pnode, RBNode* pguardNode);
//返回以节点为根的最小元素
RBNode* TreeMinimum(RBNode* pnode, RBNode* pguardNode);
//返回以节点为根的最大元素
RBNode* TreeMaxmum(RBNode* pnode, RBNode* pguardNode);
//返回节点的后继
RBNode* TreeSuccessor(RBNode* pnode, RBNode* pguardNode);