Path Sum:
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.
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.
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.
Input: root = [], targetSum = 0
Output: false
Explanation: Since the tree is empty, there are no root-to-leaf paths.
[0, 5000]
.-1000 <= Node.val <= 1000
-1000 <= targetSum <= 1000
Try this Problem on your own or check similar problems:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean hasPathSum(TreeNode root, int targetSum) {
return helper(root, 0, targetSum);
}
private boolean helper(TreeNode root, int currSum, int targetSum){
if(root == null) return false;
if(root.left == null && root.right == null) return currSum + root.val == targetSum;
return helper(root.left, currSum + root.val, targetSum) ||
helper(root.right, currSum + root.val, targetSum);
}
}
We use the DFS (depth first search) just like in
Same Tree
and keep the currentSum
variable to track the path sum, up to leaf node (note that we could have gone without it, subtract values from targetSum
and check if at leaves we have 0 for targetSum
). We have base case where node is leaf
and then we check if currSum + root.val == targetSum
, otherwise we go deeper into the tree by checking both left and right subtree in DFS fashion. We will cover all nodes, so the time complexity is O(n)
, and space complexity in worst case is O(n)
if the tree is left or right skewed.
Don’t settle for anything less than the crown. Join our newsletter and become the King of Interviews! Click here to join now and get the latest updates.