unique binary search tree

 1 class Solution {
 2 public:
 3     vector<TreeNode *> generate(int left,int right )
 4     {
 5         vector<TreeNode *> vec;
 6         
 7         if( left > right )
 8             vec.push_back( NULL );
 9    
10         for(int i=left;i<=right;i++)
11         {           
12             vector<TreeNode *> vec1 = generate(left,i-1);
13             vector<TreeNode *> vec2 = generate(i+1,right);
14             for(int j=0;j<vec1.size();j++)
15             {
16                 for(int k=0;k<vec2.size();k++)
17                 {
18                     TreeNode* node = new TreeNode(i);
19                     node->left = vec1[j];
20                     node->right = vec2[k];
21                     vec.push_back( node );
22                 }
23             }
24         }
25         return vec;
26     }
27     vector<TreeNode *> generateTrees(int n) {
28         // Start typing your C/C++ solution below
29         // DO NOT write int main() function
30         vector<TreeNode *> vec;
31         
32         vec = generate(1,n);
33         
34         return vec;
35         
36     }
37 };

 

posted on 2013-09-03 13:17  jumping_grass  阅读(179)  评论(0)    收藏  举报

导航