题目描述
给出数字n,要求返回所有1-n能能构成的二叉搜索树的根节点数组。
用递归
当输入为0时,输出是空数组
提交代码
class Solution {
public List<TreeNode> generateTrees(int n) {
if(n==0) return new ArrayList<TreeNode>();
return genTrees(1, n);
}
public List<TreeNode> genTrees(int start, int end){
List<TreeNode> list=new ArrayList<TreeNode>();
if(start>end) {
list.add(null);
}
for(int i=start;i<=end;i++) {
List<TreeNode> leftTrees = genTrees(start, i-1);
List<TreeNode> rightTrees = genTrees(i+1, end);
for(TreeNode leftRoot: leftTrees) {
for(TreeNode rightRoot: rightTrees) {
TreeNode root= new TreeNode(i);
root.left=leftRoot;
root.right=rightRoot;
list.add(root);
}
}
}
return list;
}
}