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 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 (NULL); return res;} if (s = = e) {treenode* t = new TreeNode (s); Res.push_back (t); return res;} for (int i=s, i<=e; i++) {vector<treenode*> left = Generatetrees (s,i-1);vector<treenode*> right = Generatetrees (i+1,e); for (int p=0, p<left.size (); p++) {for (int q=0; q<right.size (); q++) {treenode* t = new TreeNode (i); t->left = Left[p];t->right = Right[q];res.push_back (t);}} return res;}};
Leetcode--unique Binary Search Trees II