📌  相关文章
📜  国际空间研究组织 | ISRO CS 2015 |问题 40(1)

📅  最后修改于: 2023-12-03 14:50:47.330000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2015 |问题 40

这是一道关于算法和数据结构的问题,要求学习者使用递归解决问题。

问题描述

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

例如,给定如下二叉树和目标和 22

      5
     / \
    4   8
   /   / \
  11  13  4
 /  \      \
7    2      1

在该二叉树中,存在节点值之和为 22 的路径 5 -> 4 -> 11 -> 2

解题思路

该问题可以通过递归来解决。

首先,判断当前节点是否为空,如果为空,则返回 false

然后,判断是否为叶子节点,如果是,判断当前节点的值是否等于目标和,如果是,返回 true,否则,返回 false

最后,递归地判断当前节点的左子树和右子树是否存在一个满足条件的路径。

代码实现
class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

class Solution:
    def hasPathSum(self, root: TreeNode, sum: int) -> bool:
        if not root:
            return False
            
        if not root.left and not root.right:
            return root.val == sum
            
        return self.hasPathSum(root.left, sum - root.val) or self.hasPathSum(root.right, sum - root.val)

以上是Python代码示例。如果你使用其他编程语言,可以参考上述思路,编写相应的代码实现。