Path Sum II

来源:互联网 发布:公司职位划分 知乎 编辑:程序博客网 时间:2024/06/05 08:09

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 a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    vector<vector<int>> result;    vector<vector<int>> pathSum(TreeNode* root, int sum) {        vector<int> tmp;        dfs(root,sum,0,tmp);        return result;    }    void dfs(TreeNode * node, int sum, int temp,vector<int> tmp)    {        if (node==NULL)            return ;        if(node->left==NULL && node->right==NULL)        {            if(temp+node->val==sum)            {                tmp.push_back(node->val);                result.push_back(tmp);            }            return ;        }        tmp.push_back(node->val);        dfs(node->left,sum,temp+node->val,tmp);        dfs(node->right,sum,temp+node->val,tmp);    }};


0 0
原创粉丝点击