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] ]
path sum 的升级版,思路一样,木有难度。
void pathSum2Iter(TreeNode *node, int sum, vector<int> t, vector<vector<int>> &ret) { if (!node) return; int val = sum - node->val; t.push_back(node->val); if (val == 0 && (!node->left && !node->right)) { ret.push_back(t); return; } pathSum2Iter(node->left, val, t, ret); pathSum2Iter(node->right, val, t, ret); } vector<vector<int> > pathSum2(TreeNode *root, int sum) { vector<vector<int>> ret; vector<int> t; pathSum2Iter(root, sum, t, ret); return ret; }