95. 不同的二叉搜索树 II
解题思路
- 遍历每一个节点
- 查看以k为根节点的二叉搜索树
- 储存所有左子树的根节点
- 储存所有右子树的根节点
- 将左子树和右子树组装起来 将根节点储存在向量中
class Solution {public List<TreeNode> generateTrees(int n) {if(n < 1) return generate(1,0);return generate(1,n);}List<TreeNode> generate(int start,int end){List<TreeNode> subTree = new ArrayList<>();if(start > end){subTree.add(null);return subTree;}for(int k = start; k <= end; k++){List<TreeNode> left = generate(start,k - 1);List<TreeNode> right = generate(k + 1,end);for(int i = 0; i < left.size(); i++){for(int j = 0; j < right.size(); j++){TreeNode root = new TreeNode(k);root.left = left.get(i);root.right = right.get(j);subTree.add(root);}}}return subTree;}
}