二叉树删除子树c++代码
时间: 2024-05-25 17:08:41 浏览: 168
用C++二级指针、创建、删除二叉树
在二叉树中删除一个子树,需要先找到该子树的根节点,然后将其从父节点中删除,并释放该子树的所有节点空间。下面是一个示例的 C++ 代码:
```c++
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
void deleteSubtree(TreeNode* root) {
if (root == nullptr) return;
deleteSubtree(root->left);
deleteSubtree(root->right);
delete root;
}
void deleteChild(TreeNode* parent, bool isLeft) {
if (isLeft) {
deleteSubtree(parent->left);
parent->left = nullptr;
} else {
deleteSubtree(parent->right);
parent->right = nullptr;
}
}
```
其中,`deleteSubtree` 函数用于删除以 `root` 为根节点的子树,采用递归方式,先删除左子树,再删除右子树,最后删除根节点。`deleteChild` 函数用于删除父节点 `parent` 的左(或右)子树,通过 `isLeft` 参数来确定是删除左子树还是右子树。在删除子树之前,需要先释放该子树的所有节点空间。
阅读全文