2
* Definition for a binary tree node. public class TreeNode { int val; TreeNode left; TreeNode3
* right; TreeNode() {} TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left,4
* TreeNode right) { this.val = val; this.left = left; this.right = right; } }7
public List<TreeNode> generateTrees(int n) {11
public List<TreeNode> helper(int lo, int hi) {12
List<TreeNode> res = new ArrayList<>();18
for (int i = lo; i <= hi; i++) {19
List<TreeNode> left = helper(lo, i - 1);20
List<TreeNode> right = helper(i + 1, hi);22
for (TreeNode l : left) {23
for (TreeNode r : right) {24
TreeNode head = new TreeNode(i);