# 不同的二叉搜索树 II

给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。

 

示例 1:

输入:n = 3
输出:[[1,null,2,null,3],[1,null,3,2],[2,1,3],[3,1,null,null,2],[3,2,null,1]]
    

示例 2:

输入:n = 1
输出:[[1]]
    

 

提示:

  • 1 <= n <= 8
## template ```java class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } class Solution { public List generateTrees(int n) { if (n == 0) return new LinkedList(); return generate_trees(1, n); } private LinkedList generate_trees(int start, int end) { LinkedList all_trees = new LinkedList(); if (start > end) { all_trees.add(null); return all_trees; } for (int i = start; i <= end; i++) { LinkedList left_trees = generate_trees(start, i - 1); LinkedList right_trees = generate_trees(i + 1, end); for (TreeNode l : left_trees) for (TreeNode r : right_trees) { TreeNode current_tree = new TreeNode(i); current_tree.left = l; current_tree.right = r; all_trees.add(current_tree); } } return all_trees; } } ``` ## 答案 ```java ``` ## 选项 ### A ```java ``` ### B ```java ``` ### C ```java ```