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 if you found it helpful
Follow for more 🤝 && Happy Coding 🚀
If you enjoy my content, support me by following me on my other socials:
https://linktr.ee/tanujav7
Top comments (0)