二叉树中和为某一值的路径
·
给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。
注意:叶子节点 是指没有子节点的节点。

本体采用递归回溯算法来实现。
class Solution {
public:
vector<vector<int>> res;//全局变量res 用来存放结果数组 是二维的
vector<int> temp;//全局变量temp 用来存放当前的路径
vector<vector<int>> pathSum(TreeNode* root, int target) {
recur(root,target);//递归
return res;
}
void recur(TreeNode* root,int target)
{
if(root==NULL)//如果节点为空,可能是这个二叉树是空的,也可能是已经遍历完了叶子节点,所以直接返回 无返回值
{
return;
}
temp.push_back(root->val);//将根节点的值存放到temp数组中
target-=root->val;//从target中减去当前的值
//当target的值已经减到0并且root到达叶子节点
//说明这个路径符合题目要求
//路径之和等于target
if(target==0&&root->left==nullptr&&root->right==nullptr)
{
res.push_back(temp);//将这个数组,存放到结果数组中
}
recur(root->left,target);//继续递归左子节点
recur(root->right,target);//继续递归右子节点
temp.pop_back();//回溯,要将当前这个节点从temp数组中删掉
//target+=root->val;//target值不用还原是因为target是值传递,当前层的不影响下一层的结果
}
};
更多推荐
所有评论(0)