电商网站制作公司,wordpress 主题 数据,网站icp备案管理系统,哪里有网站建设官网难度#xff1a; 中等通过率#xff1a; 38.7%题目链接#xff1a;. - 力扣#xff08;LeetCode#xff09;
题目描述 给定一个二叉树和一个目标和#xff0c;找到所有从根节点到叶子节点路径总和等于给定目标和的路径。
说明: 叶子节点是指没有子节点的节点。
示例: …难度 中等通过率 38.7%题目链接. - 力扣LeetCode
题目描述 给定一个二叉树和一个目标和找到所有从根节点到叶子节点路径总和等于给定目标和的路径。
说明: 叶子节点是指没有子节点的节点。
示例: 给定如下二叉树以及目标和 sum 22 5/ \4 8/ / \11 13 4/ \ / \7 2 5 1返回:
[[5,4,11,2],[5,8,4,5]
]解法深度优先遍历
在遍历过程中记录下当前走过的路径如果路径之和等于目标值且当前节点为叶子节点那么将当前路径插入结果中。
深度优先遍历采用递归的写法可以使用单个容器记录下当前的路径。进入节点时在路径中插入节点退出节点时删除节点。
class Solution {
public:vectorvectorint pathSum(TreeNode* root, int sum) {vectorvectorint ret;vectorint path;dfs(root, path, sum, ret);return ret;}void dfs(TreeNode* node, vectorint path, int remain, vectorvectorint ret){if(node nullptr){return;}remain - node-val;path.push_back(node-val);if(node-left nullptr node-right nullptr remain 0){ret.push_back(path);}dfs(node-left, path, remain, ret);dfs(node-right, path, remain, ret);path.pop_back();}
};