LeetCode 113. 路径总和 II(回溯)
发布日期:2021-07-01 03:14:06 浏览次数:2 分类:技术文章

本文共 1778 字,大约阅读时间需要 5 分钟。

文章目录

1. 题目信息

给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。

说明: 叶子节点是指没有子节点的节点。

示例:给定如下二叉树,以及目标和 sum = 22,              5             / \            4   8           /   / \          11  13  4         /  \    / \        7    2  5   1返回:[   [5,4,11,2],   [5,8,4,5]]

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/path-sum-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

类似题目

在这里插入图片描述

class Solution {
public: vector
> pathSum(TreeNode* root, int sum) {
if(!root) return {
}; vector
> ans; vector
way; path(root, 0, sum, way, ans); return ans; } void path(TreeNode *root, int cursum, int &sum, vector
way, vector
> &ans) { if(!root) return; way.push_back(root->val); path(root->left, cursum+root->val, sum, way, ans); way.pop_back(); way.push_back(root->val); path(root->right, cursum+root->val, sum, way, ans); if(!root->left && !root->right && cursum+root->val == sum) { ans.push_back(way); } }};

《剑指Offer》同题:

在这里插入图片描述

class Solution {
vector
> ans; vector
temp;public: vector
> pathSum(TreeNode* root, int sum) {
if(!root) return {
}; dfs(root,sum,0); return ans; } void dfs(TreeNode* root, int& sum, int s) {
if(root && !root->left && !root->right) {
if(s+root->val == sum) {
temp.push_back(root->val); ans.push_back(temp); temp.pop_back(); } return; } temp.push_back(root->val); if(root->left) dfs(root->left,sum,s+root->val); if(root->right) dfs(root->right,sum,s+root->val); temp.pop_back(); }};

转载地址:https://michael.blog.csdn.net/article/details/100550154 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:LeetCode 118. 杨辉三角
下一篇:LeetCode 671. 二叉树中第二小的节点

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月22日 10时52分22秒