Path Sum 是 LeetCode 上的一个经典算法问题。题目要求判断一个二叉树是否存在一条从根节点到叶子节点的路径,使得路径上的节点值之和等于一个给定的数字。
解题思路
解决 Path Sum 问题的常见思路是使用递归。递归的基本思想是,对于每个节点,判断该节点是否是叶子节点,如果是,则检查其值是否等于目标值;如果不是,则递归检查其左右子节点。
以下是 Python 语言实现的代码示例:
class Solution:
def hasPathSum(self, root, targetSum):
if not root:
return False
if not root.left and not root.right:
return root.val == targetSum
return self.hasPathSum(root.left, targetSum - root.val) or self.hasPathSum(root.right, targetSum - root.val)
代码示例
# 以下是针对不同语言的代码示例,您可以根据需要选择合适的语言进行学习和实践。
# Python
class Solution:
def hasPathSum(self, root, targetSum):
if not root:
return False
if not root.left and not root.right:
return root.val == targetSum
return self.hasPathSum(root.left, targetSum - root.val) or self.hasPathSum(root.right, targetSum - root.val)
# Java
public class Solution {
public boolean hasPathSum(TreeNode root, int targetSum) {
if (root == null) {
return false;
}
if (root.left == null && root.right == null) {
return root.val == targetSum;
}
return hasPathSum(root.left, targetSum - root.val) || hasPathSum(root.right, targetSum - root.val);
}
}
相关链接
更多 LeetCode 算法题目,请访问 LeetCode 官网。
点击这里 了解更多算法基础。