回溯法枚举,或者dfs就可以:
class Solution {
public:
vector<string> res;
string t = "->";
void backtrack(TreeNode* root, string s){
if(!root->left && !root->right){//叶子节点
res.push_back(s += to_string(root->val));
return;
}
if(root->left) backtrack(root->left, s+to_string(root->val)+t);
if(root->right) backtrack(root->right, s+to_string(root->val)+t);
}
vector<string> binaryTreePaths(TreeNode* root) {
if(!root) return res;
string s;
if(!root->left && !root->right) res.push_back(to_string(root->val));//如果root是叶子节点
else backtrack(root, s);
return res;
}
};