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
);
}
};
转载请注明原文地址:https://ipadbbs.8miu.com/read-57556.html