📅  最后修改于: 2023-12-03 14:50:47.330000             🧑  作者: Mango
这是一道关于算法和数据结构的问题,要求学习者使用递归解决问题。
给定一个二叉树和一个目标和,判断在二叉树中是否存在从根节点到叶子节点的路径,其所有节点值相加等于目标和。
例如,给定如下二叉树和目标和 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代码示例。如果你使用其他编程语言,可以参考上述思路,编写相应的代码实现。