программа для нахождения суммы самых глубоких листьев дерева с использованием C ++ - PullRequest
0 голосов
/ 11 января 2020

Я видел этот вопрос на leetcode, который должен найти сумму самых глубоких узлов дерева. Код, который я отправил, дает правильный ответ при тестировании, но дает неправильный ввод при отправке для того же теста. Ссылка на вопрос: https://leetcode.com/problems/deepest-leaves-sum/

Мой код:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
map<int,int> m;
class Solution {
public:
void level(TreeNode* root,int n)
    {
        if(root!=NULL)
        {
        m[n]+=root->val;
        level(root->left,n+1);
        level(root->right,n+1);
    }
  //  return m;
    }
    int deepestLeavesSum(TreeNode* root) {

        level(root,1);

        return m.rbegin()->second;
    }
};

проблемный c контрольный пример: [6,7,8,2,7 , 1,3,9, NULL, 1,4, NULL, NULL, NULL, 5]

1 Ответ

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

Если бы я догадался, это может быть несколько тестов, использующих ваш класс Solution. Вы сохраняете свои результаты в переменной вне класса решения, поэтому между прогонами может не произойти повторная инициализация.

Редактировать: Чтобы указать c, похоже, это может быть проблемой:.

std :: map m; // кажется в области файла

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