路径总和

last modify

问题简述

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。

叶子节点 是指没有子节点的节点。

112. 路径总和 - 力扣(LeetCode)

思路

  • 先序遍历,达到叶子节点是进行判断;

  • 注意空节点的判断;

Python
# 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

Last updated