Как исправить это при вставке BST и позволить функции вставки работать - PullRequest
0 голосов
/ 03 мая 2020

Код, показанный в 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

};

Ответы [ 2 ]

0 голосов
/ 03 мая 2020

Это решение вопроса. Спасибо за помощь @john!

void InsertBSTNode(TreeNode* &root, int val){
if (root==NULL){
    root = new TreeNode(val);
    root->data=val;
    root->left=root->right=NULL;}
else if(val<root->data)
    InsertBSTNode(root->left,val);
else if(val>root->data)
    InsertBSTNode(root->right,val);
};
0 голосов
/ 03 мая 2020

Итак, это код, который, я думаю, вы пытаетесь написать

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, выделив узел на место, где вы делаете вставку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...