zoukankan      html  css  js  c++  java
  • 刷题-力扣-113. 路径总和 II

    113. 路径总和 II

    题目链接

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

    题目描述

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

    叶子节点 是指没有子节点的节点。

    示例 1:

    输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22
    输出:[[5,4,11,2],[5,8,4,5]]
    

    示例 2:

    输入:root = [1,2,3], targetSum = 5
    输出:[]
    

    示例 3:

    输入:root = [1,2], targetSum = 0
    输出:[]
    

    提示:

    • 树中节点总数在范围 [0, 5000] 内
    • -1000 <= Node.val <= 1000
    • -1000 <= targetSum <= 1000

    题目分析

    1. 根据题目描述,统计从根节点到叶子节点路径和等于目标值的路径
    2. 使用深度优先搜索,每遍历一个节点就将给节点加入数组nums
    3. 遍历到叶子节点,若该路径等于目标值,就将nums加入到pathNums

    代码

    /**
     * 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:
        vector<vector<int>> pathSum(TreeNode* root, int targetSum) {
            vector<vector<int>> pathNums;
            vector<int> nums;
            path(root, targetSum, pathNums, nums);
            return pathNums;
        }
    
    private:
        void path(TreeNode* root, int targetSum, vector<vector<int>>& pathNums, vector<int>& nums) {
            if (!root) return;
            nums.push_back(root->val);
            if (root->left == nullptr && root->right == nullptr && targetSum == root->val) {
                pathNums.push_back(nums);
            }
            path(root->left, targetSum - root->val, pathNums, nums);
            path(root->right, targetSum - root->val, pathNums, nums);
            nums.pop_back();
        }
    
    };
    
  • 相关阅读:
    记录一次Jmeter性能测试
    【转】解疑性能测试之集合点
    WebService的发布及客户端的调用
    Jmeter性能测试之如何写Java请求测试用例类
    Vue nextTick用法
    Geolocation 地理定位
    Vue 生命周期及运用场景
    CSS3 动画基本使用
    Electron菜单
    Electron + vue 项目安装vue-devtools调试工具
  • 原文地址:https://www.cnblogs.com/HanYG/p/15120786.html
Copyright © 2011-2022 走看看