二叉树 hasPathSum() 是一个编程问题,用于检查二叉树中是否存在从根节点到叶子节点的路径,使得路径上所有节点值的和等于给定的整数 targetSum。这个问题通常用于解决二叉树的遍历和深度优先搜索(DFS)算法。
以下是一个使用深度优先搜索(DFS)算法的 Python 实现:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def hasPathSum(root: TreeNode, targetSum: int) -> bool:
if not root:
return False
if not root.left and not root.right:
return root.val == targetSum
return hasPathSum(root.left, targetSum - root.val) or hasPathSum(root.right, targetSum - root.val)
这个实现首先检查根节点是否为空,如果为空则返回 False。然后,如果当前节点是叶子节点,检查其值是否等于目标和。如果不是叶子节点,递归地检查左子树和右子树,将目标和减去当前节点的值。如果左子树或右子树中存在满足条件的路径,则返回 True。
这个实现的时间复杂度是 O(n),其中 n 是二叉树中节点的数量。空间复杂度是 O(h),其中 h 是二叉树的高度。
领取专属 10元无门槛券
手把手带您无忧上云