image.png

方法一:递归

求二叉树和一个目标和,判断树中是否存在根节点到叶子节点的路径,路径上所有节点值相加等于目标和。

问题可以转化为,寻找是否有子节点的值为 sum - root-> value 。如果相等,那么说明该路径符合题目要求。如果不相等,就是不符合题目要求。

  1. class Solution {
  2. public:
  3. bool hasPathSum(TreeNode* root, int sum) {
  4. if(root == nullptr){
  5. return false;
  6. }
  7. if(root -> left == nullptr && root -> right == nullptr){
  8. return sum == root->val;
  9. }
  10. return hasPathSum(root->left, sum - root->val) || hasPathSum(root->right, sum - root->val);
  11. }
  12. };