Question:
Given n, generate all structurally unique BST's (binary search trees) that store values 1... n.
For example,
Given n = 3, your program shocould return all 5 unique BST's shown below.
1 3 3 2 1
\///\\
3 2 1 3 2
//\\
2 1 2 3
The Code is as follows:
/**
* Definition for binary tree
* Struct TreeNode {
* Int val;
* TreeNode * left;
* TreeNode * right;
* TreeNode (int x): val (x), left (NULL), right (NULL ){}
*};
*/
Class Solution {
Public:
Vector <TreeNode *> getalltrees (int begin, int end)
{
Vector <TreeNode *> result;
If (begin> end)
{
Result. push_back (NULL );
Return result;
}
Vector <TreeNode *> lefttree;
Vector <TreeNode *> righttree;
For (int I = begin; I <= end; I ++)
{
Lefttree = getalltrees (begin, I-1 );
Righttree = getalltrees (I + 1, end );
For (int j = 0; j <lefttree. size (); j ++)
{
For (int t = 0; t <righttree. size (); t ++)
{
TreeNode * root = new TreeNode (I + 1 );
Root-> left = lefttree [j];
Root-> right = righttree [t];
Result. push_back (root );
}
}
}
Return result;
}
Vector <TreeNode *> generateTrees (int n ){
Vector <TreeNode *> result;
Result = getalltrees (0, n-1 );
Return result;
}
};