95. Unique Binary Search Trees II

来源:互联网 发布:路由器怎么限制网络 编辑:程序博客网 时间:2024/06/11 05:22

1、题目描述

输入n,返回所有由节点值为1~n的n个节点形成的BST。


2、思路

递归。每个节点都去当一下根节点,再算出左右子树的所有可能性。进行结合。


3、代码

    vector<TreeNode*> generateTrees(int n){        vector<TreeNode*> ans;        if(n==0) return ans;        return generateTrees1(1,n);    }    vector<TreeNode*> generateTrees1(int start,int end) {        vector<TreeNode*> ans;        if(start>end){            ans.push_back(NULL);            return ans;        }                for(int i=start;i<=end;i++){            vector<TreeNode*> v1 = generateTrees1(start,i-1);            vector<TreeNode*> v2 = generateTrees1(i+1,end);                        for(int j=0;j<v1.size();j++){                      for(int k=0;k<v2.size();k++){                    TreeNode* root = new TreeNode(i);                    root->left = v1[j];                    root->right = v2[k];                    ans.push_back(root);                }            }        }        return ans;    }


原创粉丝点击