题目:
输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。
临时数组temp存储一条路径上的节点值。
val不断更新目标值,当val为0,且当前节点为叶节点,满足条件。
将temp数组导入到结果res中。
后面两个递归加temp数组中的尾元素弹出过程,参考下我后面画的简陋流程。emmm。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<vector<int>>res;
vector<vector<int>> pathSum(TreeNode* root, int sum)
{
if(!root) return res;
vector<int>temp;
judge(root,sum,temp);
return res;
}
void judge(TreeNode*&root,int sum,vector<int>&temp)
{
if(!root) return;
int val=sum-root->val;
temp.push_back(root->val);
if(!root->left&&!root->right&&val==0)
{
res.push_back(temp);
}
judge(root->left,val,temp);
judge(root->right,val,temp);
temp.pop_back();
}
};