LeetCode: Path Sum II

来源:互联网 发布:json与xml的比较 编辑:程序博客网 时间:2024/05/22 17:15

Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.

For example:
Given the below binary tree and sum = 22,
              5             / \            4   8           /   / \          11  13  4         /  \    / \        7    2  5   1

return

[   [5,4,11,2],   [5,8,4,5]]

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    vector<vector<int> > pathSum(TreeNode *root, int sum) {        if(root == NULL)            return result;        vector<int> curVector;        int cur = 0;        findSum(root, sum, cur, curVector);        return result;    }private:    vector<vector<int> > result;    void findSum(TreeNode* node, int sum, int &cur, vector<int> &curVector)    {        cur += node->val;        curVector.push_back(node->val);        if(node->left == NULL && node->right == NULL && cur == sum)        {            result.push_back(curVector);        }        if(node->left)        {            findSum(node->left, sum, cur, curVector);            cur -= node->left->val;            curVector.pop_back();        }        if(node->right)        {            findSum(node->right, sum, cur, curVector);            cur -= node->right->val;            curVector.pop_back();        }    }};




0 0
原创粉丝点击