1 题目描述
给定一个值n,请生成所有的存储值1…n.的二叉搜索树(BST)的结构
2 解题思路
见代码
3 代码实现
class Solution {
public:
vector<TreeNode*> generateTrees(int n) {
return generateTreesHelper(1, n);
}
vector<TreeNode*> generateTreesHelper(int small, int large){
vector<TreeNode*> treeList;
if(small > large){
treeList.push_back(NULL);
return treeList;
}
for(int i = small; i <= large; i++){
vector<TreeNode*> leftSubtree = generateTreesHelper(small, i - 1);
vector<TreeNode*> rightSubtree = generateTreesHelper(i + 1, large);
for(int j = 0; j < leftSubtree.size(); j++)
for(int k = 0; k < rightSubtree.size(); k++){
TreeNode *rootNode = new TreeNode(i);
rootNode->left = leftSubtree[j];
rootNode->right = rightSubtree[k];
treeList.push_back(rootNode);
}
}
return treeList;
}
};
4 运行结果
运行时间:4ms
占用内存:488k