/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
string int2str(int n)
{
string res,tmp;
bool positive = true;
if(n<0){positive = false;n=-n;}
while(n>0)
{
int s = n%10;
tmp += s+'0';
n = n/10;
}
if(!positive)res+='-';
for (int i = tmp.length()-1;i>=0;i--)
{
res+=tmp[i];
}
return res;
}
vector<string> binaryTreePaths(TreeNode* root) {
if(root==NULL)return vector<string>();
vector<string> res;
if(root->left==NULL&&root->right==NULL)
{
res.push_back(int2str(root->val));
}
else
{
vector<string> lef,rig;
lef= binaryTreePaths(root->left);
rig = binaryTreePaths(root->right);
for(int i =0;i<lef.size();i++)
{
if(lef[i].length()!=0)
{string tmp;
tmp = int2str(root->val)+"->"+lef[i];
res.push_back(tmp);
}
}
for(int i =0;i<rig.size();i++)
{
if(rig[i].length()!=0){
string tmp;
tmp = int2str(root->val)+"->"+rig[i];
res.push_back(tmp);
}
}
}
return res;
}
};