题解 | #二叉树根节点到叶子节点和为指定值的路径#

二叉树根节点到叶子节点和为指定值的路径

http://www.nowcoder.com/practice/840dd2dc4fbd4b2199cd48f2dadf930a

这个题比较坑的一点是 results 不能是 std::set<vector<int>>,要不然会倒在第 19 个用例上。然后就是判断叶子节点了,比较简单,和 NC5、NC7、NC8 一种题型</int>

#include <numeric>

class Solution {
public:
    vector<vector<int>> results;
    int              target = 0;
    void  NodeSum(TreeNode* head, vector<int> sum) {
         if(!head) return;
         sum.push_back(head->val);
         if(head->left == nullptr && head->right == nullptr){
             if(accumulate(sum.begin(), sum.end(), 0) == target)
                 results.push_back(sum);
             return;
         }
        NodeSum(head->left, sum);
        NodeSum(head->right, sum);
    }
    vector<vector<int>> pathSum(TreeNode* root, int sum) {
        if(!root) return {};
        target = sum;
        NodeSum(root, {});
        return results;
    }
};
全部评论

相关推荐

10-05 11:11
海南大学 Java
投票
理想江南137:感觉挺真诚的 感觉可以试一试
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务