问题描述:
Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.
For example:
Given the below binary tree and sum = 22
,
5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1
return true, as there exist a root-to-leaf path 5->4->11->2
which sum is 22.
原问题链接:https://leetcode.com/problems/path-sum/
问题分析
这个问题的关键在于找到问题中的一个递归关系。因为如果要判断从根节点到某个叶节点是否存在这么一个节点值的和等于目标值,我们可以从一个节点当前的值和目标值判断。如果当前值已经是叶节点,而且和目标值相等,则返回true。否则同时递归的去看它的左右子节点和目标值的关系。
这里还有一个要注意的返回条件,就是当当前节点是null的时候,直接返回false。
详细的代码实现如下:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public boolean hasPathSum(TreeNode root, int sum) { if(root == null) return false; if(root.val == sum && root.left == null && root.right == null) return true; return hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val); } }
相关推荐
java lru leetcode :ice_cream: LeetCode Kindem 的个人 LeetCode 题解仓库,欢迎交流学习。 下面的目录中 $number 题号代表经典 LeetCode 题目,$number.$number ...LeetCode ...Sum ...Sum ...Sum ...Path Sum 73
java java_leetcode题解之Path Sum III.java
LeetCode — Path Sum III分析及实现方法 题目描述: You are given a binary tree in which each node contains an integer value. Find the number of paths that sum to a given value. The path does not need...
3. "Binary Tree Maximum Path Sum"(二叉树的最大路径和):这是一道困难级别的问题,涉及到深度优先搜索(DFS)和回溯,寻找从根节点到叶子节点的最大路径和。 开源项目“LeetCode-master”很可能包含了这些问题...
- 数组和链表:LeetCode中的基础题目通常涉及数组和链表操作,如“两数之和”(Two Sum)和“反转链表”(Reverse Linked List)。C++的`std::vector`和`std::list`是常用的容器,能方便地实现这些操作。 - 树形...
对于更复杂的题目,如"Binary Tree Maximum Path Sum"(二叉树的最大路径和),我们需要掌握深度优先搜索(DFS)或广度优先搜索(BFS)策略,同时理解和运用树的性质。在这个问题中,我们需要沿着一条路径递归地访问...
1. Two Sum:利用哈希表,时间复杂度降为O(n)。 2. Longest Increasing Subsequence:动态规划求最长递增子序列。 3. Maximum Subarray:Kadane's Algorithm解决最大子数组和问题。 4. Ternary Search:在有序...
例如“最短路径问题”(Shortest Path in Binary Matrix),可以使用深度优先搜索(DFS)或广度优先搜索(BFS)来解决。 7. **回溯**:一种试错的搜索策略,用于解决约束满足问题。例如“组合总和”(Combination ...
5. 图论与最短路径:"Shortest Path in Binary Matrix"(二进制矩阵中最短路径)涉及Dijkstra算法或BFS(广度优先搜索),寻找最短路径。 三、字符串处理 字符串处理题目也是LeetCode的重要部分,例如"Reverse ...
Path Sum Unique Paths Unique Paths II Longest Palindromic Substring Interleaving String Triangle Distinct Subsequences Decode Ways Palindrome Partitioning II Maximal Rectangle ###Recursion N-Queens N-...
public int PathSum(TreeNode root, int sum) { _count = 0; _sum = sum; Travel(root, new List()); return _count; } private void Travel(TreeNode current, List<int> ret) { if (current == null) { ...
5. **二叉树**:二叉树问题包括遍历、查找、平衡调整等,如"二叉树的最大路径和"(Maximum Path Sum)、"验证二叉搜索树"(Validate Binary Search Tree)。 6. **回溯**:回溯是一种尝试所有可能解的算法策略,...
在每个分类下,选择几个代表性的题目进行尝试,例如在“Arrays”分类下,可以先解决“Two Sum”这样的基础题目,以理解数组操作的基本思路。 接下来,是“Medium”级别的挑战。这个阶段的题目难度有所提升,往往...
例如,"两数之和"(Two Sum)问题,可以通过哈希表在O(n)时间内找到目标和对应的两个数。 2. **字符串**:字符串处理题目通常涉及模式匹配、字符统计和字符串转换。如"无重复字符的最长子串"(Longest Substring ...
例如,"二叉树的最大路径和"(Maximum Path Sum)要求找到从根节点到叶子节点的路径,使得经过的节点权值之和最大。 5. **动态规划**:动态规划是一种解决问题的方法,通过将问题分解成更小的子问题来求解。如"背包...
Path to Get All Keys 深度优先搜索 996. Number of Squareful Arrays 拓扑排序 269. Alien Dictionary 单调栈 42. Trapping Rain Water 85. Maximal Rectangle Monotonic stack for 2d array 239. Sliding Window ...
leetcode 【演示记录】 报告 展示 2017/03/06 1.二和,167.二和二 2107/03/06 15.3 总和,16.3 总和最近,18.4 总和,11.最多水的容器 2017/03/09 62.Unique Paths, 63.Unique Paths II, 64.Minimum Path Sum 2017/...
$ cd /path/to/leetcode/c/ # /path/to/leetcode/cpp/ $ mkdir build $ cd build $ cmake .. $ cd .. CMake将自动生成buildsystem文件并下载 。 注意:添加新的单元测试后,请务必重新加载CMake。 要构建,请使用--...
"Binary Tree Maximum Path Sum"则可能涉及到深度优先搜索或广度优先搜索等树遍历策略。 此外,C#的特性如委托、事件、匿名函数、LINQ等也可能在LeetCode的C#解决方案中得到体现。例如,LINQ(Language Integrated ...
另一个例子是“Binary Tree Maximum Path Sum”,需要你找到二叉树中具有最大路径和的路径,这涉及到递归和树的遍历。 解决LeetCode问题的过程中,你还可以学习如何编写清晰、简洁且易于理解的代码,这是面试官非常...