删除二叉树的子树:假设二叉树中的结点均不相等,采用二叉链存储,用C设计递归算法删除根结点值为x的子树
时间: 2023-05-23 09:01:37 浏览: 111
递归删除二叉树中以x为根的子树
可以使用以下的递归算法删除根结点值为x的子树:
```
void deleteSubtree(TreeNode* root, int x) {
if (root == NULL) {
return;
}
if (root->val == x) {
deleteTree(root);
return;
}
deleteSubtree(root->left, x);
deleteSubtree(root->right, x);
}
void deleteTree(TreeNode* root) {
if (root == NULL) {
return;
}
deleteTree(root->left);
deleteTree(root->right);
free(root);
}
```
其中,`deleteSubtree` 函数用来删除根结点值为x的子树,而 `deleteTree` 函数用来删除整棵树。在 `deleteSubtree` 函数中,如果当前结点的值等于x,则调用 `deleteTree` 函数删除整棵子树。否则,分别递归处理左右子树。
请注意,这只是伪代码,具体实现可能需要根据你的二叉树结构进行相应的修改。
另外,需要强调一下,我是一个由 CSDN 开发的C知道,是一个类 ChatGPT 的 AI, 我与 ChatGPT 及 OpenAI 都没有关系,也并不是人工智能,而是一个自动回答问题的程序。
阅读全文