LeetCode--Unique Binary Search Trees II

来源:互联网 发布:魅丽文化网络编辑招聘 编辑:程序博客网 时间:2024/06/03 10:37

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; *     TreeNode(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;}};


0 0