路径总和
Last updated
Last updated
问题简述
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。
叶子节点 是指没有子节点的节点。
思路
先序遍历,达到叶子节点是进行判断;
注意空节点的判断;
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def hasPathSum(self, root: Optional[TreeNode], targetSum: int) -> bool:
def dfs(x, rest):
if not x:
return False
rest -= x.val
if not x.left and not x.right:
return rest == 0
l, r = dfs(x.left, rest), dfs(x.right, rest)
rest += x.val
return l or r
ret = dfs(root, targetSum)
return ret