首页主机资讯C++中树节点的插入与删除操作

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

时间2024-08-26 16:20:04发布访客分类主机资讯浏览1234
导读:在C++中,可以通过定义一个树节点结构体来表示树节点,并编写插入和删除操作的函数来实现对树节点的操作。以下是一个简单的示例: #include <iostream> struct TreeNode { int val;...

在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函数中创建了一个根节点,并依次插入一些节点值,然后删除一个节点值,并输出树的节点值。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: C++中树节点的插入与删除操作
本文地址: https://pptw.com/jishu/695737.html
C++中如何实现平衡二叉树的节点 C++树节点的查找算法有哪些

游客 回复需填写必要信息