1.二叉树的所有路径
图片说明
思路一:DFS
图片说明

/**
 * 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:
    void construct(TreeNode* p,string path,vector<string>& paths)
    {//字符串不需要引用,因为是一条
        if(p==nullptr) return;
        path+=to_string(p->val);
        if(p->left==nullptr&&p->right==nullptr)
        {
            paths.push_back(path);
        }
        else
        {
            path+="->";
            construct(p->left,path,paths);
            construct(p->right,path,paths);
        }
    }
    vector<string> binaryTreePaths(TreeNode* root) {
        vector<string> paths;
        construct(root,"",paths);
        return paths;
    }
};