LeetCode 113 路径总和II

题目

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

思路

采用先序遍历二叉树,可以方便得到各个根节点到叶节点路径,比较目标和。

代码

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    vector<vector<int>>result;//返回二维数组
    vector<int>path;//路径数组
    void preorder_fun(TreeNode*root,vector<int>&path,int sum){
        if(root==NULL)return;
        else{
            path.push_back(root->val);//压栈
            if(root->val==sum&&root->left==nullptr&&root->right==nullptr)
                result.push_back(path);//满足条件存放二维数组
            else{
                preorder_fun(root->left,path,sum-root->val);//压左节点(此处递归)
                preorder_fun(root->right,path,sum-root->val);//压右节点(此处回溯)
            }
            path.pop_back();//弹出回溯
        }
    }
    vector<vector<int>> pathSum(TreeNode* root, int sum) {
        if(root)preorder_fun(root,path,sum);
        return result;
    }
};

原文地址:https://www.cnblogs.com/ambassdor/p/12240747.html

时间: 2024-10-09 14:12:24

LeetCode 113 路径总和II的相关文章

LeetCode 113. 路径总和 II(Path Sum II)

题目描述 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / 4 8 / / 11 13 4 / \ / 7 2 5 1 返回: [ [5,4,11,2], [5,8,4,5] ] 解题思路 从树根开始遍历,记录当前路径和,递归向下访问子节点并添加到路径中,若碰到叶节点,判断当前路径和是否等于目标值,若等于就把当前路径加入到结果集中. 代码 1 /** 2 *

Leetcode 113. 路径总和 II

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<vector<int>> res; vector<int> aux

113路径总和II

题目: 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 来源: https://leetcode-cn.com/problems/path-sum-ii/ 法一: 自己的代码, 没有官方题解 思路: 递归实现,类似前序遍历 # 执行用时 :44 ms, 在所有 python3 提交中击败了99.18% 的用户 # 内存消耗 :14.2 MB, 在所有 python3 提交中击败了98.55%的用户 # Definition for a binary tree

113. 路径总和 II

给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径.说明: 叶子节点是指没有子节点的节点. 代码实现: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solu

113 Path Sum II 路径总和 II

给定一个二叉树和一个和,找到所有从根到叶路径总和等于给定总和的路径.例如,给定下面的二叉树和 sum = 22,              5             / \            4   8           /   / \          11  13  4         /  \    / \        7    2  5   1返回[   [5,4,11,2],   [5,8,4,5]] 详见:https://leetcode.com/problems/path

[LeetCode] 437. 路径总和 III ☆☆☆(递归)

路径总和 III 描述 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点). 二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数. 示例: root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8 10 / \ 5 -3 / \ \ 3 2 11 / \ \3 -2 1 返回 3.和等

路径总和 II

给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回: [ [5,4,11,2], [5,8,4,5]] code /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *lef

LeetCode 113. Path Sum II路径总和 II (C++)

题目: Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum. Note: A leaf is a node with no children. Example: Given the below binary tree and sum = 22, 5 / 4 8 / / 11 13 4 / \ / 7 2 5 1 Return: [ [5,4,11

leetcode 113 path Sum II 路径和

递归先序遍历+vector<int>容器记录路径 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution { 11 public: 12