题目

DFS,

class Solution {
public:
    int vis[100005];
    int m;
    vector<TreeNode*> generateTrees(int n) {
        vector<TreeNode*> ans;
        if(n==0)
            return ans;
        return fun(1,n);
    }

    vector<TreeNode*> fun(int l,int r)
    {
        vector<TreeNode*> result;
        for(int i=l;i<=r;i++)
        {
            vector<TreeNode*> lefts = fun(l,i-1);
            vector<TreeNode*> rights = fun(i+1,r);

            for(int j=0;j<lefts.size();j++)
            {
                for(int k=0;k<rights.size();k++)
                {
                    TreeNode* tree = new TreeNode(i);
                    tree->left = lefts[j];
                    tree->right = rights[k];

                    result.push_back(tree);
                }
            }
        }
        if(result.size()==0)
        {
            result.push_back(NULL);
        }

        return result;

    }
};

相关文章:

  • 2021-09-16
  • 2021-10-25
  • 2021-10-29
猜你喜欢
  • 2021-12-03
  • 2021-06-08
  • 2021-11-14
  • 2021-10-08
  • 2021-07-01
  • 2021-06-28
  • 2022-12-23
相关资源
相似解决方案