問題描述
給定一個二叉樹和一個目標(biāo)和,找到所有從根節(jié)點(diǎn)到葉子節(jié)點(diǎn)路徑總和等于給定目標(biāo)和的路徑。
Example
給定如下二叉樹,以及目標(biāo)和 sum = 22,
返回:
[
[5,4,11,2],
[5,8,4,5]
]
題目鏈接:113. 路徑總和 II (難度:中等)
思路
采用先序遍歷對所有路徑求和,如果dang'qian
代碼
class Solution {
public:
vector<vector<int>> pathSum(TreeNode* root, int sum) {
vector<vector<int>> path;
vector<int> tmp;
pathSum(root,sum,tmp,path);
return path;
}
void pathSum(TreeNode* root,int sum,vector<int> &tmp,vector<vector<int>> &path){
if(!root)
return;
if(!root->left && !root->right && root->val == sum){
tmp.push_back(root->val);
path.push_back(tmp);
tmp.pop_back();
return;
}
tmp.push_back(root->val);
pathSum(root->left,sum - root->val,tmp,path);
pathSum(root->right,sum - root->val,tmp,path);
tmp.pop_back();
}
};
執(zhí)行結(jié)果: 8 ms, 20 MB
