网站禁止火车头采集,怎么看网站被降权,班级优化大师使用指南,手机网站和网站一体力扣题目链接(opens new window)
给定一个二叉树和一个目标和#xff0c;找到所有从根节点到叶子节点路径总和等于给定目标和的路径。
说明: 叶子节点是指没有子节点的节点。
示例: 给定如下二叉树#xff0c;以及目标和 sum 22#xff0c; 在路径总和题目的基础上…
力扣题目链接(opens new window)
给定一个二叉树和一个目标和找到所有从根节点到叶子节点路径总和等于给定目标和的路径。
说明: 叶子节点是指没有子节点的节点。
示例: 给定如下二叉树以及目标和 sum 22 在路径总和题目的基础上多加了一个求路径那就开一个容器记录 每一条路径。至于维护路径则需要回溯。当路径的节点和符合题意则压入结果vector中。
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:vectorvectorintres;vectorintpath;void dfs(TreeNode* root,int count){if(!root) return;if(!root-left !root-right count 0){res.push_back(path);}if(!root-left !root-right) return; // 普通空节点直接舍弃不做处理if(root-left){count - root-left-val;path.push_back(root-left-val);dfs(root-left,count);count root-left-val;path.pop_back();}if(root-right){count - root-right-val;path.push_back(root-right-val);dfs(root-right,count);count root-right-val;path.pop_back();}}vectorvectorint pathSum(TreeNode* root, int targetSum) {if(!root) return res;path.push_back(root-val);dfs(root,targetSum - root-val);return res;}
};