在C++中,我们可以通过递归的方式实现树的节点的复制和删除操作。以下是实现树节点复制和删除的示例代码:
#includestruct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int value) : val(value), left(nullptr), right(nullptr) {} }; // 复制树节点 TreeNode* copyTree(TreeNode* root) { if (root == nullptr) { return nullptr; } TreeNode* newNode = new TreeNode(root->val); newNode->left = copyTree(root->left); newNode->right = copyTree(root->right); return newNode; } // 删除树节点 void deleteTree(TreeNode* root) { if (root == nullptr) { return; } deleteTree(root->left); deleteTree(root->right); delete root; } int main() { TreeNode* root = new TreeNode(1); root->left = new TreeNode(2); root->right = new TreeNode(3); root->left->left = new TreeNode(4); root->left->right = new TreeNode(5); // 复制树节点 TreeNode* copiedRoot = copyTree(root); // 删除原始树节点 deleteTree(root); // 删除复制的树节点 deleteTree(copiedRoot); return 0; }
在上面的示例代码中,我们定义了一个简单的树节点结构TreeNode
,并实现了复制树节点的copyTree
函数和删除树节点的deleteTree
函数。在main
函数中,我们创建了一个树,并分别复制和删除了树节点,以演示复制和删除树节点的操作。