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
/** * Definition for binary tree * struct TreeNode {* int val; * TreeNode *left; * TreeNode *right; * Tre Enode (int x): Val (x), left (null), right (NULL) {} *}; */class Solution {Public:vector<treenode *> generatetrees (int n) {return generatetrees (1,n); } vector<treenode *>generatetrees (int s,int e) {vector<treenode *> res; if (s>e) res.push_back (0);//the default element is 0 else if (s==e) res.push_back (New Treeno De (s));//new else if (s<e) {for (int i=s;i<=e;i++) {Vector<treenode *>left=gene Ratetrees (s,i-1),//the left subtrees Vector<treenode *>right=generatetrees (i+1,e),//the right subtree s for (int j=0;j<left.size (); j + +) {for (int k=0;k<right.size (); k++) { TreeNode *proot=new TreeNode (i);//every Tree has a rootNode proot->left=left[j]; proot->right=right[k]; Res.push_back (Proot); }}}} return res; }};
Leetcode_num95_unique BT II