Leecode路径相关 题目
Leetcode 129.路径求和
Leetcode 257.输出所有路径
都是同样的套路
递归,注意递归的参数 cur为当前状态,由于每个状态都不同,不需要取引用(&),题目求的是状态总和。
129.
class Solution {
public:
int sumNumbers(TreeNode* root) {
if(!root)return 0;
dfs(root,root->val);
return res;
}
private:
int res = 0;
void dfs(TreeNode* root,int cur){
if(!root) return ;
if(!root->left && !root->right){
res+=cur;
return;
}
if(root->left)dfs(root->left, cur*10+root->left->val);
if(root->right)dfs(root->right,cur*10+root->right->val);
}
};
257
class Solution {
public:
vector<string> binaryTreePaths(TreeNode* root) {
if(!root) return ans;
dfs(root,to_string(root->val),ans);
return ans;
}
private:
string curr;
vector<string> ans;
void dfs(TreeNode* root,string curr, vector<string>& ans){
if(!root) return ;
if(!root->left && !root->right){
ans.push_back(curr);
return ;
}
if(root->left) dfs(root->left,curr+"->"+to_string(root->left->val),ans);
if(root->right) dfs(root->right,curr+"->"+to_string(root->right->val),ans);
}
};