C ++ Return не работает - PullRequest
       12

C ++ Return не работает

0 голосов
/ 08 июня 2018

Добавление элемента в дерево AVL.Дерево в настоящее время не имеет элементов.Я пытаюсь добавить один.Функция add работает нормально, за исключением того, что программа останавливается и заканчивается через 2 секунды, когда дело доходит до return new node(k).Почему это?

struct node 
{
    int key;
    unsigned char height;
    node *left;
    node *right;
    node(int k) {key = k; left = right = 0; height = 1;}
};
node *root;
node *add(node* p, int k)
{
    if(!p)
    {
        return new node(k);

    }
    if(k < p->key)
        p->left = add(p->left,k);
    else
        p->right = add(p->right,k);
    return balance(p);
}


int main()
{
    root = NULL;
    add(root, 10);
    printf("%d",root->key);
    return 0;
}

1 Ответ

0 голосов
/ 08 июня 2018

Ваша функция возвращает значение, и вы хотите использовать его.Но вы нигде не сохраняете это.В частности, вы, похоже, ожидаете, что root будет содержать новый узел.Итак, вы должны сделать:

root = add(root, 10);
...