二叉树的所有路径
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param root the root of the binary tree
* @return all root-to-leaf paths
*/
string intTostr(int x){
stringstream ss;
ss<<x;
string str;
ss>>str;
return str;
}
void printPath(int path[],int index,vector<string> &list){
string str;
for(int i=0;i<=index;i++)
{
str+=intTostr(path[i]);
if(i<index)
str+="->";
}
list.push_back(str);
}
void preorderTraversal(TreeNode* root,int path[],int index,vector<string> &list){
if(!root)
return ;
path[index]=root->val;
if(root->left==NULL && root->right==NULL)
printPath(path,index,list);
preorderTraversal(root->left,path,index+1,list);
preorderTraversal(root->right,path,index+1,list);
}
vector<string> binaryTreePaths(TreeNode* root) {
// Write your code here
vector<string> list;
int path[1024];
preorderTraversal(root,path,0,list);
return list;
}
};