leetcode_题解_path sum_easy

来源:互联网 发布:如何解读融资融券数据 编辑:程序博客网 时间:2024/04/30 20:59

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      1

return true, as there exist a root-to-leaf path 5->4->11->2 which sum is 22.


/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    bool hasPathSum(TreeNode *root, int sum) {        if(root==NULL)            return false;        if(root->left==NULL && root->right==NULL)        {            if(root->val==sum)                       return true;            else                 return false;        }        if(root->left!=NULL && hasPathSum(root->left,sum-root->val)==true)            return true;        if(root->right!=NULL && hasPathSum(root->right,sum-root->val)==true)            return true;        return false;    }};



方法2:使用一个私有变量代表是否第一次调用函数

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {private:    int flag=0;public:    bool hasPathSum(TreeNode *root, int sum) {        if(root==NULL && flag==0)            return false;        flag=1;        if(root==NULL && flag==1 && sum==0)            return true;        if(root->left==NULL && root->right==NULL && root->val==sum)            return true;        if(root!=NULL && root->left!=NULL && hasPathSum(root->left,sum-root->val)==true)            return true;        if(root!=NULL && root->right!=NULL && hasPathSum(root->right,sum-root->val)==true)            return true;        return false;    }};



0 0