According to the problem we have to find the sum from every root-to-leaf path and check whether it is equal to the targetSum.
So, the intuitive code will be
class Solution { public boolean hasPathSum(TreeNode root, int targetSum) { return pathSum(root, 0, targetSum); } boolean pathSum(TreeNode node, int sum, int targetSum){ if(node==null) return false; sum += node.val; if(sum==targetSum) return true; return pathSum(node.left, sum, targetSum) || pathSum(node.right, sum, targetSum); }
}
Verdict : 100 / 117 test cases passed.
Hidden test case gives the clear picture of the entirety of the question.
Our sum should not be just based on node value but root-to-leaf path.
After reaching the leaf node only are we allowed to take the sum of it.
So, the code modifies slightly.
class Solution { public boolean hasPathSum(TreeNode root, int targetSum) { return pathSum(root, 0, targetSum); } boolean pathSum(TreeNode node, int sum, int targetSum){ if(node==null) return false; sum += node.val; //we are adding the condition to identify leaf node. If node.left and node.right==null indicates the "Leaf Node" if(node.left==null && node.right==null && sum==targetSum) return true; return pathSum(node.left, sum, targetSum) || pathSum(node.right, sum, targetSum); }
}
Thanks for reading🥰.
Feel free to comment🖌️ and like the post💓
Follow for more 🤝 && Happy Coding🚀👩💻
Don’t forget to check-out my other socials😍:
Github
Hashnode
Medium
Twitter(X)