class Solution {
public List<TreeNode> generateTrees(int n) {
if (n == 0) {
return new LinkedList<TreeNode>();
}
List<TreeNode> res = add(1, n);
return res;
}
public List<TreeNode> add(int left,int right){
List<TreeNode> res = new LinkedList<>();
if(left > right){
res.add(null);
return res;
}
for (int i = left; i <= right; i++) {
List<TreeNode> leftList = add(left, i - 1);
List<TreeNode> rightList = add(i + 1, right);
for (TreeNode leftTree : leftList) {
for (TreeNode rightTree : rightList) {
TreeNode root = new TreeNode(i);
root.left = leftTree;
root.right = rightTree;
res.add(root);
}
}
}
return res;
}
}
4/17/26About 1 min