Path Sum

来源:互联网 发布:sql 条件替换 编辑:程序博客网 时间:2024/05/16 07:00
-----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 1

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

-----SOLUTION-----
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) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        if(!root) return false;        flag = false;        target = sum;        preOrder(root,0);        return flag;            }    void preOrder(TreeNode* node,int sum){        sum = node->val + sum;        if(node->left)        {                       preOrder(node->left,sum);        }        if(node->right)        {                       preOrder(node->right,sum);        }        if(!node->left && !node->right && sum == target)        {            flag = true;        }    }private:    bool flag;    int target;};

0 0
原创粉丝点击