164. Unique Binary Search Trees II

class Solution { public: /** * @paramn n: An integer * @return: A list of root */ vector<TreeNode *> generateTrees(int n) { // write your code here return generate(0, n - 1); } vector<TreeNode *> generate(int start, int end){ vector<TreeNode *> res; if(start > end){ res.push_back(NULL); return res; } for(int i = start; i <= end; i++){ vector<TreeNode *> left = generate(start, i - 1); vector<TreeNode *> right = generate(i + 1, end); for(int j = 0; j < left.size(); j++){ for(int k = 0; k < right.size(); k++){ TreeNode * root = new TreeNode(i + 1); res.push_back(root); root->left = left[j]; root->right = right[k]; } } } } };

Comments

Popular posts from this blog

算法的比较