题解 | #二叉树根节点到叶子节点和为指定值的路径#
二叉树根节点到叶子节点和为指定值的路径
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; } };