LeetCode刷题(C++)——Path Sum II(Medium)

来源:互联网 发布:2017淘宝评价计分规则 编辑:程序博客网 时间:2024/06/05 05:56

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>> pathSum(TreeNode* root, int sum) {        vector<vector<int>> path;if (root == NULL)return path;int cursum = 0;vector<int> onepath;dfs(root, sum, cursum, onepath, path);return path;}void dfs(TreeNode* root, int sum, int cursum, vector<int> onepath, vector<vector<int>>& path){cursum += root->val;onepath.push_back(root->val);bool isLeaf = (root->left == NULL) && (root->right == NULL);if (cursum == sum&&isLeaf)path.push_back(onepath);if (root->left != NULL)dfs(root->left, sum, cursum, onepath, path);if (root->right != NULL)dfs(root->right, sum, cursum, onepath, path);onepath.pop_back();    }};


0 0
原创粉丝点击