C++中树节点的插入与删除操作

avatar
作者
筋斗云
阅读量: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结构体来表示树节点,然后实现了插入和删除操作的函数insertremove。在main函数中创建了一个根节点,并依次插入一些节点值,然后删除一个节点值,并输出树的节点值。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!