[Leetcode] Path Sum -- uses Recursion
Question:
Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.For example:Given the below binary tree and sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1return true, as there exist a root-to-leaf path 5->4->11->2 which sum is 22.
Analysis:
The question is to check whether there is a path from the root node to the leaf node in the given tree. The sum of values on all nodes in the path is the given value. You can use recursion to check whether the value of the right subtree node of the node is the current sum minus the value of the current node. The left subtree also performs the same processing.
Code:
class Solution {public: bool hasPathSum(TreeNode* root, int sum) { if(!root) return false; if(!root->left&&!root->right) { if(root->val==sum) return true; else return false; } return hasPathSum(root->left,sum-root->val)||hasPathSum(root->right,sum-root->val); }};