问题描述

Given a binary tree, return all root-to-leaf paths.

For example, given the following binary tree:

   1
 /   \
2     3
 \
  5

All root-to-leaf paths are:

["1->2->5", "1->3"]

输出二叉树所有从根节点到叶子节点的路径。递归即可。

代码

class Solution {
public:
    vector<string> binaryTreePaths(TreeNode* root) {
        vector<string> r;
        TreeNode* p = root;
        if(p == 0) return r;
        string s="";
        char* str = new char[20];
        sprintf(str, "%d", root->val);
        s+=str;
        if(p->left==0&&p->right==0) {
        	r.push_back(s);
        	return r;
		}
        vector<string> left = binaryTreePaths(p->left);
        vector<string> right = binaryTreePaths(p->right);
        s+="->";
        for(int i=0;i<left.size();i++) {
            r.push_back(s+left[i]);
        }
        for(int i=0;i<right.size();i++) {
            r.push_back(s+right[i]);
        }
        return r;
    }
};