数据结构拓展习题:二叉树删除以根节点值为x的所有子树
题目:设计算法,对于二叉树T中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。





void Destroy(BiTree &T)
{
if (T != NULL)
{
Destroy(T->lchild);//销毁左子树
Destroy(T->rchild);//销毁右子树
free(T);//销毁根结点
T = NULL;
}
}
void FindNode(BiTree &T, TElemType x)
{
if (T == NULL)
return;
if (T->data == x)//如果发现该结点为所要销毁的结点
{
Destroy(T);//销毁它
return;
}
FindNode(T->lchild, x);//看左子树是否存在要被销毁的结点
FindNode(T->rchild, x);//看右子树是否存在要被销毁的结点
}