1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| class Solution { public List<TreeNode> generateTrees(int n) { if (n == 0) { return new LinkedList<TreeNode>(); } return generateTrees(1, n); }
public List<TreeNode> generateTrees(int begin, int end) { List<TreeNode> ans = new LinkedList<>();
if (begin > end) { ans.add(null); return ans; }
for (int i = begin; i <= end; i++) { var leftTrees = generateTrees(begin, i - 1); var rightTrees = generateTrees(i + 1, end);
for (var left : leftTrees) { for (var right : rightTrees) { TreeNode root = new TreeNode(i); root.left = left; root.right = right; ans.add(root); } } } return ans; } }
@AllArgsConstructor @NoArgsConstructor class TreeNode { int val; TreeNode left; TreeNode right;
TreeNode(int val) { this.val = val; } }
|