删除二叉树的子树:假设二叉树中的结点均不相等,采用二叉链存储,设计递归算法删除根结点值为x的子树。使用c语言完成完整的代码
时间: 2023-04-01 22:01:32 浏览: 95
Python数据结构之二叉树查、删、修
以下是 CSDN 开发的 C 知道的回答:
这个问题可以回答。以下是 C 语言的代码实现:
```
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
struct TreeNode* deleteSubtree(struct TreeNode* root, int x) {
if (root == NULL) {
return NULL;
}
if (root->val == x) {
root->left = NULL;
root->right = NULL;
return NULL;
}
root->left = deleteSubtree(root->left, x);
root->right = deleteSubtree(root->right, x);
return root;
}
```
这个递归算法的思路是,如果当前结点的值等于 x,那么将其左右子树都置为 NULL,然后返回 NULL,表示这个子树已经被删除了。否则,递归地删除左右子树,然后返回当前结点。
阅读全文