void del(TreeNode *T)
{
if(T)
{
if(T->leftChild)del(T->leftChild);
if(T->rightChild)del(T->rightChild);
free(T);
}
}
void delXsub(TreeNode *T,TreeNode *preT,int x,int f)
{
TreeNode *p=T;
if(p->data==x)
{
del(p);
if(f==0)
preT->leftChild=NULL;
else if(f==1)
preT->rightChild=NULL;
}
else
{if(p->leftChild)delXsub(p->leftChild,p,x,0);
if(p->rightChild)delXsub(p->rightChild,p,x,1);}
}
void BinaryTree::RemoveSubTree(int x)
{
int f;
TreeNode *p;
delXsub(root,p,x,f);
}