无法更改类中的指针值

Unable to change the pointer value in class

本文关键字:指针      更新时间:2023-10-16

我正在尝试在C++中构建BST,类内的根节点在调用insert((函数时没有影响,它仍然是NULL。 当我需要将数据插入树中时,我将根传递给 insert_tree(( 函数,但当我尝试在insert_tree内打印根值时,它总是返回 NULL

#include <iostream>
struct node
{
    int value;
    node *left;
    node *right;
};
class bst
{
private:
node *root; 
    node* insert(node* parent,int value)
    {
        if(parent== NULL){
            parent = new node;
            parent->value = value;
            parent->left = parent->right = NULL;
        }
        else if(parent->value>value){
            parent->left = insert(parent->left,value);
        }
        else{
            parent->right=insert(parent->right,value);
        }
        return parent;
    }
    void display(node* parent){
        if(parent != NULL){
        display(parent->left);
        std::cout << parent->value <<"t";
        display(parent->right);
        }
    }
public:
    bst(){
        root = NULL;    
    }
    void insert(int value){
        root = insert(root,value);
    }
    void display(){
        display(root);
    }
};
int main(int argc, char const *argv[])
{
    bst b1;
    b1.insert(10);
    b1.insert(1);
    b1.insert(11);
    b1.insert(9);
    b1.display();
    return 0;
}

我建议您先在这里阅读BST,并了解如何在BST中完成插入。首先算法是错误的,其次,在函数中使用pass by reference而不是pass by value insert_tree()。当您按值传递时,root 的值不会更改。