Given n, generate all structurally unique BST's (binary search trees) that store values 1...n.
For example,
Given n = 3, your program should return all 5 unique BST's shown below.
1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2 1 2 3
列出所有这种数,树的题好多的DFS
public class Solution {
private ArrayList<TreeNode> generate(int begin,int end){
ArrayList<TreeNode> res = new ArrayList<TreeNode>();
if(begin>end){
res.add(null);
return res;
}
for(int i=begin;i<=end;i++){
ArrayList<TreeNode> left =generate(begin, i-1);
ArrayList<TreeNode> right = generate(i+1, end);
for(int l=0;l<left.size();l++){
for(int r=0;r<right.size();r++){
TreeNode root = new TreeNode(i+1);
root.left = left.get(l);
root.right = right.get(r);
res.add(root);
}
}
}
return res;
}
public ArrayList<TreeNode> generateTrees(int n) {
return generate(0, n-1);
}
}