Given n, generate all structurally unique BST‘s (binary search trees) that store values 1...n.
For example,
Given n = 3, your program should return all 5 unique BST‘s shown below.
1 3 3 2 1
\ / / / \ 3 2 1 1 3 2
/ / \ 2 1 2 3
confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.
/*** 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:vector<TreeNode*> generateTrees(int n) {if(n<1){vector<TreeNode *> result;return result;}return help(1,n);}vector<TreeNode *> help(int start,int end){vector<TreeNode *> result;if(start>end){result.push_back(NULL);return result;}for(int i=start;i<=end;i++){vector<TreeNode *> left =help(start,i-1);vector<TreeNode *> right=help(i+1,end);for(int j=0;j<left.size();j++){for(int k=0;k<right.size();k++){TreeNode *root =new TreeNode(i);root->left=left[j];root->right=right[k];result.push_back(root);}}}return result;}};
95.Unique Binary Search Trees II
原文:http://www.cnblogs.com/zhoudayang/p/5008037.html