首页主机资讯C++树节点的父指针与孩子指针如何使用

C++树节点的父指针与孩子指针如何使用

时间2024-08-26 16:12:03发布访客分类主机资讯浏览723
导读:在C++中实现树节点的父指针与孩子指针可以通过定义一个树节点类来实现。一个简单的树节点类可以包含数据成员表示节点的值,父指针和孩子指针。 #include <iostream> #include <vector>...

在C++中实现树节点的父指针与孩子指针可以通过定义一个树节点类来实现。一个简单的树节点类可以包含数据成员表示节点的值,父指针和孩子指针。

#include <
    iostream>
    
#include <
    vector>


class TreeNode {
    
public:
    int val;
    
    TreeNode* parent;
    
    std::vector<
    TreeNode*>
     children;


    TreeNode(int value) : val(value), parent(nullptr) {
}


    void addChild(TreeNode* child) {
    
        children.push_back(child);
    
        child->
    parent = this;

    }


    void removeChild(TreeNode* child) {
    
        for (int i = 0;
     i <
     children.size();
 i++) {

            if (children[i] == child) {
    
                children.erase(children.begin() + i);
    
                child->
    parent = nullptr;
    
                break;

            }

        }

    }

}
    ;


int main() {
    
    TreeNode* root = new TreeNode(1);
    
    TreeNode* child1 = new TreeNode(2);
    
    TreeNode* child2 = new TreeNode(3);
    

    root->
    addChild(child1);
    
    root->
    addChild(child2);
    

    std::cout <
    <
     "Child 1's parent: " <
    <
     child1->
    parent->
    val <
    <
     std::endl;
    
    std::cout <
    <
     "Child 2's parent: " <
    <
     child2->
    parent->
    val <
    <
     std::endl;
    

    root->
    removeChild(child1);
    

    std::cout <
    <
     "Child 1's parent after removal: " <
    <
     child1->
    parent <
    <
     std::endl;
    

    delete child1;
    
    delete child2;
    
    delete root;
    

    return 0;

}
    

在上面的代码中,定义了一个TreeNode类,其中包含了一个整型值val,父指针parent和孩子指针children。通过addChild()方法可以添加孩子节点,并同时更新孩子节点的父指针;通过removeChild()方法可以移除孩子节点,并将其父指针置为nullptr

main()函数中,创建了一个根节点和两个子节点,并演示了如何使用父指针和孩子指针。最后记得要在程序结束前释放动态分配的内存。

通过这种方式,可以方便地构建树形结构,并实现节点之间的父子关系。

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


若转载请注明出处: C++树节点的父指针与孩子指针如何使用
本文地址: https://pptw.com/jishu/695733.html
C++中如何实现树节点的复制与删除 C++中树节点的递归与非递归遍历

游客 回复需填写必要信息