Ссылки в рекурсии - PullRequest
       11

Ссылки в рекурсии

0 голосов
/ 06 января 2020

Я использовал ссылку в этом коде для map<int ,int>, но когда я не использую ссылку, карта не заполняется рекурсивно. Я уже решил эту проблему, но не знаю, почему мне нужно использовать ссылку, когда я уже указал map<int ,int> в качестве параметра. Можете ли вы проиллюстрировать подробно?

void util(Node* root,map<int,int> &m, int level) {
    if (!root) return;

    m[level]+=root->data;

    util(root->right,m,level);

    util(root->left,m,level+1);
}

void diagonalSum(Node* root) {
    map<int,int> m;

    util(root,m,0);
    // cout<<m.size();
    for(auto i=m.begin();i!=m.end();i++){
        cout<<i->second<<" ";
    }
    cout<<"\n";
}

1 Ответ

0 голосов
/ 06 января 2020

Когда вы не используете ссылку, вы получаете копию карты при вызове функции.

С комментарий : если вы передадите по значению, каждый вызов функции будет получить копию карты. Изменение копии не приведет к изменению оригинала.

...