首页 > 代码库 > LeetCode113 Path Sum II
LeetCode113 Path Sum II
Given a binary tree and a sum, find all root-to-leaf paths where each path‘s sum equals the given sum.(Medium)
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] ]
分析:
回溯法处理即可,利用helper函数遍历所有路径,达到sum时添加到result里。
代码:
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution { 11 vector<vector<int>> result; 12 void helper(TreeNode* root, int sum, vector<int>& vec) { 13 if (root == nullptr) { 14 return; 15 } 16 vec.push_back(root -> val); 17 sum -= root -> val; 18 if (root -> left == nullptr && root -> right == nullptr) { 19 if (sum == 0) { 20 result.push_back(vec); 21 } 22 else { 23 vec.pop_back(); 24 sum += root -> val; 25 return; 26 } 27 } 28 if (root -> left != nullptr) { 29 helper(root -> left, sum, vec); 30 } 31 if (root -> right != nullptr) { 32 helper(root -> right, sum, vec); 33 } 34 vec.pop_back(); 35 sum -= root -> val; 36 } 37 public: 38 vector<vector<int>> pathSum(TreeNode* root, int sum) { 39 vector<int> vec; 40 helper(root, sum, vec); 41 return result; 42 } 43 };
LeetCode113 Path Sum II
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。