Leecode 112. 路径总和 DFS

news/2024/7/20 23:10:53 标签: leetcode, 算法, c++, 深度优先

原题链接:添加链接描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
DFS

/**
 * 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:
    bool r=false;
    void dfs(TreeNode* root, int sum, int targetSum)
    {
        if(root->left==nullptr && root->right==nullptr)
        {
            if(sum==targetSum) r=true;
            return;
        }
        if(root->left) dfs(root->left,sum+root->left->val,targetSum);
        if(root->right) dfs(root->right,sum+root->right->val,targetSum);
    }
    bool hasPathSum(TreeNode* root, int targetSum) {
        if(root==nullptr) return false;
        dfs(root,root->val,targetSum);
        return r;
    }
};

递归

class Solution {
public:
    bool hasPathSum(TreeNode* root, int targetSum) {
        if(root==nullptr) return false;
        if(root->left==nullptr && root->right==nullptr)
            return root->val==targetSum;
        return hasPathSum(root->left,targetSum-root->val) || hasPathSum(root->right,targetSum-root->val);
    }
};

http://www.niftyadmin.cn/n/1264874.html

相关文章

(Leetcode) 最大数- Python实现

题目:最大数 给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。示例 : 输入: [10,2],输出: 210 输入: [3,30,34,5,9],输出: 9534330 说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。 ---…

Leecode 226. 翻转二叉树

原题链接:Leecode 226. 翻转二叉树 递归 /*** 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…

(Leetcode) 摆动排序 II - Python实现

题目&#xff1a;摆动排序 II 给定一个无序的数组 nums&#xff0c;将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]... 的顺序。示例 : 输入: nums [1, 5, 1, 1, 6, 4]&#xff0c;输出: 一个可能的答案是 [1, 4, 1, 5, 1, 6] 输入: nums [1, 3, 2, 2, 3, 1…

Leecode 100. 相同的树 递归

原题链接&#xff1a;Leecode 100. 相同的树 /*** 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…

(Leetcode) 寻找峰值 - Python实现

题目&#xff1a;寻找峰值 峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 nums&#xff0c;其中 nums[i] ≠ nums[i1]&#xff0c;找到峰值元素并返回其索引。 数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回任何一个峰值所在位置即可。 你可以假设…

Leecode 101. 对称二叉树 递归

原题链接&#xff1a;Leecode 101. 对称二叉树 递归&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int…

(Leetcode) 寻找重复数 - Python实现

题目&#xff1a;寻找重复数 给定一个包含 n 1 个整数的数组 nums&#xff0c;其数字都在 1 到 n 之间&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。假设只有一个重复的整数&#xff0c;找出这个重复的数。示例: 输入: [1,3,4,2,2]&#xff0…

Leecode 129. 求根节点到叶节点数字之和 DFS

原题链接&#xff1a;Leecode 129. 求根节点到叶节点数字之和 代码一 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNod…