试编写代码:对于二叉树中每一个元素值为x的结点,删除以它为根的子树,并释放相应空间。函数原型为:void delSub(bTNode* T, ElemType x)
时间: 2023-06-02 22:08:17 浏览: 119
我明白了,请给我一点时间编写这个函数。以下是代码实现:
```c++
typedef struct bTNode {
ElemType data;
struct bTNode *lchild, *rchild;
} bTNode, *bTree;
void delSub(bTNode* T, ElemType x) {
if (T) {
if (T->data == x) {
if (T->lchild) {
delSub(T->lchild, T->lchild->data);
free(T->lchild);
T->lchild = NULL;
}
if (T->rchild) {
delSub(T->rchild, T->rchild->data);
free(T->rchild);
T->rchild = NULL;
}
} else {
delSub(T->lchild, x);
delSub(T->rchild, x);
}
}
}
```
这个函数可以先判断当前结点是否为要删除的结点。如果是,就递归释放左右子树,并将当前结点的左右孩子指针设为NULL。如果不是,就递归遍历左右子树。
阅读全文