如何在BST插入中修复它

问题描述 投票:0回答:1

The code showed in Visual Studio InsertBSTNode函数错误。但是我不知道如何解决。要求是不要更改函数的类型。

TreeNode

 class TreeNode{   
    public:
    int data;
    TreeNode* left;
    TreeNode* right;

    TreeNode(int x): data(x), left(NULL), right(NULL){}
    };

InsertBSTNode

void InsertBSTNode(TreeNode* &root, int val){
// Input your code here.
if (root==NULL){
    root->data=val;
    root->left=root->right=NULL;}
else if(val<root->data)
    root->left=InsertBSTNode(root->left,val);//error
else if(val>root->data)
    root->right=InsertBSTNode(root->right,val);//error
return root;//error

};
c++ data-structures binary-search-tree
1个回答
0
投票

所以这是我认为您正在尝试编写的代码

void InsertBSTNode(TreeNode* &root, int val) {
    if (root == NULL) {
        root = new TreeNode;
        root->data=val;
        root->left=root->right=NULL;
    }
    else if (val<root->data)
        InsertBSTNode(root->left,val);
    else
        InsertBSTNode(root->right,val);
}

我已经修复了返回值的无效使用,并且已经修复了NULL指针错误,并且已经在需要执行插入操作的位置分配了一个节点。

© www.soinside.com 2019 - 2024. All rights reserved.