Skip to content

Files

Latest commit

 

History

History

112 - Path Sum

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Feb 17, 2023
Feb 13, 2023

112. Path Sum share

Problem Statement

Given the root of a binary tree and an integer targetSum, return true if the tree has a root-to-leaf path such that adding up all the values along the path equals targetSum.

A leaf is a node with no children.

 

Example 1:

Input: root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22
Output: true
Explanation: The root-to-leaf path with the target sum is shown.

Example 2:

Input: root = [1,2,3], targetSum = 5
Output: false
Explanation: There two root-to-leaf paths in the tree:
(1 --> 2): The sum is 3.
(1 --> 3): The sum is 4.
There is no root-to-leaf path with sum = 5.

Example 3:

Input: root = [], targetSum = 0
Output: false
Explanation: Since the tree is empty, there are no root-to-leaf paths.

 

Constraints:

  • The number of nodes in the tree is in the range [0, 5000].
  • -1000 <= Node.val <= 1000
  • -1000 <= targetSum <= 1000

Solutions

package main

// Definition for a binary tree node.
type TreeNode struct {
	Val   int
	Left  *TreeNode
	Right *TreeNode
}

func hasPathSum(root *TreeNode, targetSum int) bool {
	return dfs(root, targetSum, 0)
}

func dfs(node *TreeNode, targetSum int, sum int) bool {
	if node == nil {
		return false
	}

	sum += node.Val

	if node.Left == nil && node.Right == nil {
		return sum == targetSum
	}

	return dfs(node.Left, targetSum, sum) || dfs(node.Right, targetSum, sum)
}