/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
private:
vector<TreeNode*> generateTrees(int beg, int end) {
vector<TreeNode*> ret;
if(beg > end) {
ret.push_back(NULL);
return ret;
}
for(int i = beg; i <= end; ++i) {
vector<TreeNode*> leftTree = generateTrees(beg, i - 1);
vector<TreeNode*> rightTree = generateTrees(i + 1, end);
for(int j = 0; j < leftTree.size(); ++j) {
for(int k = 0; k < rightTree.size(); ++k) {
TreeNode* node = new TreeNode(i + 1);
ret.push_back(node);
node->left = leftTree[j];
node->right = rightTree[k];
}
}
}
return ret;
}
public:
vector<TreeNode*> generateTrees(int n) {
vector<TreeNode*> result;
if(n == 0) return result;
return generateTrees(0, n - 1);
}
};
LeetCode 95. Unique Binary Search Trees II
最新推荐文章于 2021-03-31 10:18:40 发布