leetcode95,指向函数的指针和指向vector的指针是干什么的?

class Solution {
public:
    vector<TreeNode *> generateTrees(int n) {
        if (n == 0) return {};
        return *generateTreesDFS(1, n);
    }
    vector<TreeNode*> *generateTreesDFS(int start, int end) { 
        //为什么要用指向函数的指正?
        vector<TreeNode*> *subTree = new vector<TreeNode*>(); 
                //这里为什么需要用构造函数?这个构造函数是vector的还是treenode的还是别的呢?
        if (start > end) subTree->push_back(NULL);
        else {
            for (int i = start; i <= end; ++i) {
                vector<TreeNode*> *leftSubTree = generateTreesDFS(start, i - 1);
                vector<TreeNode*> *rightSubTree = generateTreesDFS(i + 1, end);
                for (int j = 0; j < leftSubTree->size(); ++j) {
                    for (int k = 0; k < rightSubTree->size(); ++k) {
                        TreeNode *node = new TreeNode(i);
                        node->left = (*leftSubTree)[j];
                        node->right = (*rightSubTree)[k];
                        subTree->push_back(node);
                    }
                }
            }
        }
        return subTree;
    }
};

vector *generateTreesDFS(int start, int end)
这不是指向函数的指针, 这是成员函数的返回类型是一个vector的指针

vectorsubTree = new vector<TreeNode>();
这就是很正常的实例化(new)一个对象, 调用的当然是vector的构造函数