LeetCode 训练场:112. 路径总和

简介: LeetCode 训练场:112. 路径总和

1. 题目

112. 路径总和


2. 描述

难度

简单


395


给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。


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


示例:

给定如下二叉树,以及目标和 sum = 22,


           5

          / \

         4   8

        /   / \

       11  13  4

      /  \      \

     7    2      1


返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2。


3. 实现方法

3.1 方法 1

3.1.1 思路

DFS,一直向下找叶子节点,若到某一叶子节点时 sum = 0,则说明该路径满足要求;


3.1.2 实现


public boolean hasPathSum(TreeNode root, int sum) {
    // 根节点为 null,路径总和不等于目标和
    if(root == null){
        return false;
    }
    // 左右节点为 null,根节点作为叶子节点,比较路径和与根节点的大小
    if(root.left == null && root.right==null){
        return sum == root.val;
    }
    // 递归左右子树,看其中之一路径和是否满足条件
    return hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val);
}
目录
相关文章
|
12天前
【LeetCode 35】112.路径总和
【LeetCode 35】112.路径总和
19 0
|
12天前
【LeetCode 36】113.路径总和II
【LeetCode 36】113.路径总和II
25 0
|
2月前
|
机器人 Python
【Leetcode刷题Python】62. 不同路径
LeetCode 62题 "不同路径" 的Python解决方案,使用动态规划算法计算机器人从网格左上角到右下角的所有可能路径数量。
63 0
|
12天前
【LeetCode 34】257.二叉树的所有路径
【LeetCode 34】257.二叉树的所有路径
8 0
|
2月前
|
存储 算法 Linux
LeetCode第71题简化路径
文章讲述了LeetCode第71题"简化路径"的解题方法,利用栈的数据结构特性来处理路径中的"."和"..",实现路径的简化。
LeetCode第71题简化路径
|
2月前
|
算法
LeetCode第64题最小路径和
LeetCode第64题"最小路径和"的解题方法,运用动态规划思想,通过构建一个dp数组来记录到达每个点的最小路径和,从而高效求解。
LeetCode第64题最小路径和
|
2月前
|
算法 JavaScript Python
【Leetcode刷题Python】79. 单词搜索和剑指 Offer 12. 矩阵中的路径
Leetcode第79题"单词搜索"的Python解决方案,使用回溯算法在给定的二维字符网格中搜索单词,判断单词是否存在于网格中。
31 4
|
2月前
|
存储 Python
【Leetcode刷题Python】滑雪路径消耗时间:Testing Round #16 (Unrated) C. Skier
Leetcode题目"Testing Round #16 (Unrated) C. Skier"的Python解决方案,题目要求计算给定滑雪路径字符串的总耗时,其中未走过的边耗时5秒,走过的边耗时1秒。
44 4
|
2月前
|
存储 Python
【Leetcode刷题Python】1496.判断路径是否相交
Leetcode第1496题"判断路径是否相交"的Python代码实现,通过使用字典存储方向和集合记录访问过的坐标点来检测路径是否与自身相交。
38 2
|
2月前
|
机器人 Python
【Leetcode刷题Python】63. 不同路径 II
LeetCode 63题 "不同路径 II" 的Python解决方案,使用动态规划算法计算在有障碍物的网格中从左上角到右下角的不同路径数量。
22 1