题解 | #二叉树根节点到叶子节点和为指定值的路径#
二叉树根节点到叶子节点和为指定值的路径
http://www.nowcoder.com/practice/840dd2dc4fbd4b2199cd48f2dadf930a
利用回溯求解,注意判断退出条件
class Solution {
public:
/**
*
* @param root TreeNode类
* @param sum int整型
* @return int整型vector<vector<>>
*/
vector<int> vec;
vector<vector<int>> ans;
void getpath(TreeNode* root, int sum, int path){
if(root==nullptr) return;
if(!root->left && !root->right){
if(path+root->val==sum){
vec.push_back(root->val);
ans.push_back(vec);
vec.pop_back();
return;
}
return;
}
vec.push_back(root->val);
path+=root->val;
getpath(root->left, sum, path);
path-=root->val;
vec.pop_back();
vec.push_back(root->val);
path+=root->val;
getpath(root->right,sum, path);
path-=root->val;
vec.pop_back();
}
vector<vector<int> > pathSum(TreeNode* root, int sum) {
vec.clear();
ans.clear();
if(root == nullptr) return {};
getpath(root,sum,0);
return ans;
}
};

汤臣倍健公司氛围 393人发布