leetcode 113 —— Path Sum II

来源:互联网 发布:淘宝网店管理制度 编辑:程序博客网 时间:2024/05/16 13:38

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]]

思路 :回溯法,事实表明,使用引用的路径能显著提高运行速度

class Solution {public:vector<vector<int>> pathSum(TreeNode* root, int sum) {vector<vector<int>> res;vector<int> path;dfs(root, 0, sum, path, res);return res;}void dfs(TreeNode* root, int cnt, int sum, vector<int>& path, vector<vector<int>> &res){if (!root)return;if (!root->left&&!root->right){if (cnt + root->val == sum){path.push_back(root->val);res.push_back(path);path.pop_back();return;}}path.push_back(root->val);dfs(root->left, cnt + root->val, sum, path, res);dfs(root->right, cnt + root->val, sum, path, res);path.pop_back();return;  //其实不加也可以,void函数执行完后自动返回上级}};




0 0
原创粉丝点击