上一题 96. Unique Binary Search Trees dfs即可,直接看代码
// Runtime: 1 ms, faster than 96.03% of Java online submissions for Unique Binary Search Trees II. //Memory Usage: 39.7 MB, less than 13.06% of Java online submissions for Unique Binary Search Trees II. public List<TreeNode> generateTrees(int n) { if (n == 0) return new ArrayList<>(); return generateTrees(1, n); } private List<TreeNode> generateTrees(int m, int n) { if (m > n) return null; List<TreeNode> list = new ArrayList<>(); List<TreeNode> tmp = new ArrayList<>(); tmp.add(null); for (int i = m; i <= n; i++) { List<TreeNode> leftNodes = generateTrees(m, i - 1); List<TreeNode> rightNodes = generateTrees(i + 1, n); for (TreeNode leftNode : leftNodes == null ? tmp : leftNodes) { for (TreeNode rightNode : rightNodes == null ? tmp : rightNodes) { list.add(new TreeNode(i, leftNode, rightNode)); } } } return list; }