使用C ++查找树的最深叶之和的程序

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

我在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;
    }
};

有问题的测试用例:[6,7,8,2,7,1,3,9,null,1,4,null,null,null,5]

c++ recursion binary-tree
1个回答
0
投票

如果我猜想它可能正在使用您的Solution类运行多个测试用例。您正在将结果存储在解决方案类的外部,因此在运行之间可能不会重新初始化它。

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