思想:递归,想明白返回的条件是啥,当进行到叶节点时,将该路径保存到vector内,返回。
卡住的地方:公共路径不知道如何递归传递下去,只需考虑当前节点即可,递归思想还未深入骨髓啊,仰天长叹。"->"加在递归函数中避免了初始情况下打印。
class Solution {
public:
vector<string> binaryTreePaths(TreeNode* root) {
vector<string>res;
string temp;
if(root==nullptr) return res;
dfs(root,temp,res);
return res;
}
void dfs(TreeNode*root,string temp,vector<string>&res){
if(root==nullptr) return;
temp=temp+to_string(root->val);
if(root->left==nullptr&&root->right==nullptr){
res.push_back(temp);
return;
}
dfs(root->left,temp+"->",res);
dfs(root->right,temp+"->",res);
}
};