在C++中,我們可以通過遞歸的方式實現樹的節點的復制和刪除操作。以下是實現樹節點復制和刪除的示例代碼:
#include <iostream>
struct 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
函數中,我們創建了一個樹,并分別復制和刪除了樹節點,以演示復制和刪除樹節點的操作。