题目:二叉树的路径和
问题描述:给定一个二叉树,找出所有路径中各节点相加总和等于给定目标值
的路径。一个有效的路径,指的是从根节点到叶节点的路径。
思路:找到和为目标值的路径,输出路径上的元素。
代码:
class Solution {
public:
vector<vector<int>>p;
/**
* @param root the root of binary tree
* @param target an integer
* @return all valid paths
*/
vector<vector<int>> binaryTreePathSum(TreeNode *root, int target) {
// Write your code here
vector<int>v;
int s=0;
find(root,target,v,s);
return p;
}
void find(TreeNode *root,int target,vector<int>v,int s)
{
if(root!=NULL)
{
v.push_back(root->val);
s=s+root->val;
if(s==target&&root->left==NULL&&root->right==NULL)
{
p.push_back(v);
}
if(root->left!=NULL)
{
find(root->left,target,v,s);
}
if(root->right!=NULL)
{
find(root->right,target,v,s);
}
s=s-root->val;
v.pop_back();
}
}
};
感想:考虑问题要详细!