阅读量:0
在C++中,可以通过定义一个树节点结构体来表示树节点,并编写插入和删除操作的函数来实现对树节点的操作。以下是一个简单的示例:
#include <iostream> struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int v) : val(v), left(nullptr), right(nullptr) {} }; void insert(TreeNode* root, int val) { if (root == nullptr) { root = new TreeNode(val); } else if (val < root->val) { if (root->left == nullptr) { root->left = new TreeNode(val); } else { insert(root->left, val); } } else { if (root->right == nullptr) { root->right = new TreeNode(val); } else { insert(root->right, val); } } } void remove(TreeNode* root, int val) { if (root == nullptr) { return; } if (val < root->val) { remove(root->left, val); } else if (val > root->val) { remove(root->right, val); } else { if (root->left == nullptr) { TreeNode* temp = root->right; delete root; root = temp; } else if (root->right == nullptr) { TreeNode* temp = root->left; delete root; root = temp; } else { TreeNode* minNode = root->right; while (minNode->left != nullptr) { minNode = minNode->left; } root->val = minNode->val; remove(root->right, minNode->val); } } } int main() { TreeNode* root = new TreeNode(5); insert(root, 3); insert(root, 7); insert(root, 2); insert(root, 4); insert(root, 6); insert(root, 8); remove(root, 3); // 输出树的节点值 std::cout << root->val << " " << root->left->val << " " << root->right->val << std::endl; return 0; }
在上面的示例中,定义了一个TreeNode
结构体来表示树节点,然后实现了插入和删除操作的函数insert
和remove
。在main
函数中创建了一个根节点,并依次插入一些节点值,然后删除一个节点值,并输出树的节点值。