给定一个整数 n,生成所有由 1 … n 为节点所组成的 二叉搜索树 。
class Solution {
public List<TreeNode> generateTrees(int n) {
if(n==0){
return new ArrayList();
}
return rever(1,n);
}
public List<TreeNode> rever(int start,int end){
List<TreeNode> list = new ArrayList();
if(start>end){
list.add(null);
return list;
}
for(int i=start;i<=end;i++){
List<TreeNode> lefts = rever(start,i-1);
List<TreeNode> rights = rever(i+1,end);
for(TreeNode left:lefts){
for(TreeNode right:rights){
TreeNode root = new TreeNode(i);
root.left=left;
root.right=right;
list.add(root);
}
}
}
return list;
}
}