递归题解

1. Leetcode 95 给定整数n,输出所有的BST二叉搜索树序列

class Solution {
public:
    vector<TreeNode*> generateTrees(int n) {
        vector<TreeNode*> ans;
        ans = getBST(1,n);
        return ans;
    }
    vector<TreeNode*> getBST(int from,int to)
    {
        vector<TreeNode*> temp;
        if(from>to)
        {
            temp.push_back(nullptr);
        }
        else if(from==to)
        {
            temp.push_back(new TreeNode(from));
        }
        else
        {
            for(int i=from;i<=to;++i)
            {
                vector<TreeNode*> lefttree = getBST(from,i-1);
                vector<TreeNode*> righttree = getBST(i+1,to);
                for(int p=0;p<lefttree.size();++p)
                {
                    for(int q=0;q<righttree.size();++q)
                    {
                        TreeNode* root = new TreeNode(i);
                        root->left = lefttree[p];
                        root->right = righttree[q];
                        temp.push_back(root);
                    }
                }
            }
        }
        return temp;
    }
};

猜你喜欢

转载自blog.csdn.net/qianli2333/article/details/80758080