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